Historically, we've been passing in all MessageBox parameters individually, which makes augmenting or improving MessageBox functionality challenging because to change or add even one argument requires a huge cascade of argument changes that leaves room for errors.
For other file dialog related APIs, we use a struct (DialogSettings), and so this PR takes a similar approach and refactors MessageBox parameters into a struct (MessageBoxSettings) which we then use to simplify argument passing and which will enable us to more quickly iterate and improve upon functionality in the future.
* chore: remove last instances of base::Bind
* MessageBoxCallback is a OnceCallback
* convert permission helepr cbs to Once
* convert ResponseCallback to Once
* chore: fix cpplint 'include_what_you_use' warnings
Typically by including <memory>, <utility> etc.
* chore: fix 'static/global string constant' warning
Use C style strings instead of std::string.
Style guide forbids non-trivial static / global variables. https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables
/home/charles/electron/electron-gn/src/electron/script/cpplint.js
* refactor: remove global string variables.
Fix 'global string variables are not permitted' linter warnings
by using the base::NoDestructor<> wrapper to make it explicit that
these variables are never destroyed.
The style guide's take on globals with nontrivial destructors:
https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables
* fix: initializer error introduced in last commit
* fix: remove WIP file that was included by accident
* fix: include order
* fix: include order
* fix: include order
* fix: include order, again
* add new native_mate converters for base::Value
* fix converter swapping
* remove createDeepCopy from browser/api
* replace missing ListValue converter
* convert bulk of remaining createDeepCopy instances
* convert last remaining instances of createDeepCopy
* incremental progress and helper methods for value conversion
* convert Get and add template function for GetString
* final DictionaryValue method conversions
* remove usage of base::DictionaryValue in web_contents_preferences
* use IsEnabled helper where possible
* Update atom_api_web_view_manager.cc
* Don't use is_offscreen_dummy in MessageBox
* Don't use is_offscreen_dummy in DownloadManagerDelegate
* Don't use is_offscreen_dummy in CommonWebContentsDelegate
* Remove is_offscreen_dummy from NativeWindow
atom/browser/atom_javascript_dialog_manager.cc:39: Lines should be <= 80 characters long [whitespace/line_length] [2]
atom/browser/atom_javascript_dialog_manager.cc:39: If/else bodies with multiple statements require braces [readability/braces] [4]
atom/browser/atom_javascript_dialog_manager.cc:62: Lines should be <= 80 characters long [whitespace/line_length] [2]
atom/browser/atom_javascript_dialog_manager.cc:89: If/else bodies with multiple statements require braces [readability/braces] [4]
* This is to enable more browser-like behavior so that users who run third-party code
will not be DOS'ed with alerts and confirms. This is already handled like this
in most major browsers so this will greatly help these developers