diff options
author | oshima <oshima@chromium.org> | 2014-11-19 14:21:03 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-19 22:21:32 +0000 |
commit | 0929be2a6d3e1880cfb047a7adc1c3e8e6dd5285 (patch) | |
tree | cb838d09bb51fca863e1225c1a91f09518fa3653 /components/app_modal/javascript_dialog_manager.h | |
parent | 8d4fc306580f056833a10dd6f0b55f8d2d665602 (diff) | |
download | chromium_src-0929be2a6d3e1880cfb047a7adc1c3e8e6dd5285.zip chromium_src-0929be2a6d3e1880cfb047a7adc1c3e8e6dd5285.tar.gz chromium_src-0929be2a6d3e1880cfb047a7adc1c3e8e6dd5285.tar.bz2 |
Consolidate javascript_dialog_manager.h and javascript_dialog_manager_impl.h
* Renamed JavaScriptDialgoManagerImpl to JavaScriptDialogManager.
* Add namespace app_modal_dialogs
* Add namespace javascript_dialog_extensions_client
* Shortened InstallJavaScriptDialogExtensionsClient to InstallClient to fit the 80 chars limit.
BUG=410499
TBR=sky@chromium.org
Review URL: https://codereview.chromium.org/688853005
Cr-Commit-Position: refs/heads/master@{#304903}
Diffstat (limited to 'components/app_modal/javascript_dialog_manager.h')
-rw-r--r-- | components/app_modal/javascript_dialog_manager.h | 90 |
1 files changed, 72 insertions, 18 deletions
diff --git a/components/app_modal/javascript_dialog_manager.h b/components/app_modal/javascript_dialog_manager.h index 88aa78c..8372015 100644 --- a/components/app_modal/javascript_dialog_manager.h +++ b/components/app_modal/javascript_dialog_manager.h @@ -6,28 +6,82 @@ #define COMPONENTS_APP_MODAL_JAVASCRIPT_DIALOG_MANAGER_H_ #include "base/memory/scoped_ptr.h" +#include "base/memory/singleton.h" +#include "components/app_modal/javascript_app_modal_dialog.h" +#include "content/public/browser/javascript_dialog_manager.h" -namespace content { -class JavaScriptDialogManager; -} +namespace app_modal { class JavaScriptDialogExtensionsClient; class JavaScriptNativeDialogFactory; -// Returns a JavaScriptDialogManager that creates real dialogs. -// It returns a Singleton instance of JavaScriptDialogManager, -// which should not be deleted. -content::JavaScriptDialogManager* GetJavaScriptDialogManagerInstance(); - -// Sets the JavaScriptNativeDialogFactory used to create platform specific -// dialog window implementation. -void SetJavaScriptNativeDialogFactory( - scoped_ptr<JavaScriptNativeDialogFactory> factory); - -// JavaScript dialog may be opened by an extensions/app, thus needs -// access to extensions functionality. This sets a client interface to -// access //extensions. -void SetJavaScriptDialogExtensionsClient( - scoped_ptr<JavaScriptDialogExtensionsClient> client); +class JavaScriptDialogManager : public content::JavaScriptDialogManager { + public: + static JavaScriptDialogManager* GetInstance(); + + JavaScriptNativeDialogFactory* native_dialog_factory() { + return native_dialog_factory_.get(); + } + + // Sets the JavaScriptNativeDialogFactory used to create platform specific + // dialog window instances. + void SetNativeDialogFactory( + scoped_ptr<JavaScriptNativeDialogFactory> factory); + + // JavaScript dialogs may be opened by an extensions/app, thus they need + // access to extensions functionality. This sets a client interface to + // access //extensions. + void SetExtensionsClient( + scoped_ptr<JavaScriptDialogExtensionsClient> extensions_client); + + private: + friend struct DefaultSingletonTraits<JavaScriptDialogManager>; + + JavaScriptDialogManager(); + ~JavaScriptDialogManager() override; + + // JavaScriptDialogManager: + void RunJavaScriptDialog(content::WebContents* web_contents, + const GURL& origin_url, + const std::string& accept_lang, + content::JavaScriptMessageType message_type, + const base::string16& message_text, + const base::string16& default_prompt_text, + const DialogClosedCallback& callback, + bool* did_suppress_message) override; + void RunBeforeUnloadDialog(content::WebContents* web_contents, + const base::string16& message_text, + bool is_reload, + const DialogClosedCallback& callback) override; + bool HandleJavaScriptDialog(content::WebContents* web_contents, + bool accept, + const base::string16* prompt_override) override; + void CancelActiveAndPendingDialogs( + content::WebContents* web_contents) override; + void WebContentsDestroyed(content::WebContents* web_contents) override; + + base::string16 GetTitle(content::WebContents* web_contents, + const GURL& origin_url, + const std::string& accept_lang, + bool is_alert); + + // Wrapper around a DialogClosedCallback so that we can intercept it before + // passing it onto the original callback. + void OnDialogClosed(content::WebContents* web_contents, + DialogClosedCallback callback, + bool success, + const base::string16& user_input); + + // Mapping between the WebContents and their extra data. The key + // is a void* because the pointer is just a cookie and is never dereferenced. + JavaScriptAppModalDialog::ExtraDataMap javascript_dialog_extra_data_; + + scoped_ptr<JavaScriptNativeDialogFactory> native_dialog_factory_; + scoped_ptr<JavaScriptDialogExtensionsClient> extensions_client_; + + DISALLOW_COPY_AND_ASSIGN(JavaScriptDialogManager); +}; + +} // namespace app_modal #endif // COMPONENTS_APP_MODAL_JAVASCRIPT_DIALOG_MANAGER_H_ |