Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: components/app_modal_dialogs/javascript_dialog_manager_impl.cc

Issue 666533007: Move JavaScriptDialogManager, JavascriptAppModalDialogViews to components/app_modal_dialogs (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/app_modal_dialogs/javascript_dialog_manager_impl.cc
diff --git a/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc b/components/app_modal_dialogs/javascript_dialog_manager_impl.cc
similarity index 52%
rename from chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc
rename to components/app_modal_dialogs/javascript_dialog_manager_impl.cc
index 4b770cce29324d6e1820617d7def7ad3f401ea27..7a30a7d5f7fdf4c901634ad2ef9a453b893f284e 100644
--- a/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc
+++ b/components/app_modal_dialogs/javascript_dialog_manager_impl.cc
@@ -2,16 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.h"
+#include "components/app_modal_dialogs/javascript_dialog_manager_impl.h"
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/i18n/rtl.h"
-#include "base/memory/singleton.h"
#include "base/strings/utf_string_conversions.h"
#include "components/app_modal_dialogs/app_modal_dialog.h"
#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
msw 2014/11/05 03:53:56 This is included in the header and not needed here
+#include "components/app_modal_dialogs/javascript_dialog_extensions_client.h"
+#include "components/app_modal_dialogs/javascript_native_dialog_factory.h"
#include "components/app_modal_dialogs/native_app_modal_dialog.h"
msw 2014/11/05 03:53:56 I don't think this include is needed anymore.
oshima 2014/11/05 21:42:18 this is used to access native_dialog in HandleJava
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_client.h"
@@ -20,133 +21,50 @@
#include "net/base/net_util.h"
#include "ui/base/l10n/l10n_util.h"
-#if defined(ENABLE_EXTENSIONS)
-#include "extensions/browser/process_manager.h"
-#include "extensions/common/extension.h"
-#endif // defined(ENABLE_EXTENSIONS)
-
using content::BrowserContext;
msw 2014/11/05 03:53:55 Remove this; the type is no longer used here.
oshima 2014/11/05 21:42:18 Done.
using content::JavaScriptDialogManager;
msw 2014/11/05 03:53:56 Remove this; the type is no longer used here.
oshima 2014/11/05 21:42:19 Done.
using content::WebContents;
msw 2014/11/05 03:53:56 nit: explicitly use "content::" and remove this, o
oshima 2014/11/05 21:42:18 Done.
-#if defined(ENABLE_EXTENSIONS)
-using extensions::Extension;
-#endif // defined(ENABLE_EXTENSIONS)
-
namespace {
-#if defined(ENABLE_EXTENSIONS)
-// Returns the ProcessManager for the browser context from |web_contents|.
-extensions::ProcessManager* GetExtensionsProcessManager(
- WebContents* web_contents) {
- return extensions::ProcessManager::Get(web_contents->GetBrowserContext());
-}
-
-// Returns the extension associated with |web_contents| or NULL if there is no
-// associated extension (or extensions are not supported).
-const Extension* GetExtensionForWebContents(WebContents* web_contents) {
- extensions::ProcessManager* pm = GetExtensionsProcessManager(web_contents);
- return pm->GetExtensionForRenderViewHost(web_contents->GetRenderViewHost());
-}
-#endif // defined(ENABLE_EXTENSIONS)
-
-// Keeps an |extension| from shutting down its lazy background page. If an
-// extension opens a dialog its lazy background page must stay alive until the
-// dialog closes.
-void IncrementLazyKeepaliveCount(WebContents* web_contents) {
-#if defined(ENABLE_EXTENSIONS)
- const Extension* extension = GetExtensionForWebContents(web_contents);
- if (extension == NULL)
- return;
-
- DCHECK(web_contents);
- extensions::ProcessManager* pm = GetExtensionsProcessManager(web_contents);
- if (pm)
- pm->IncrementLazyKeepaliveCount(extension);
-#endif // defined(ENABLE_EXTENSIONS)
-}
-
-// Allows an |extension| to shut down its lazy background page after a dialog
-// closes (if nothing else is keeping it open).
-void DecrementLazyKeepaliveCount(WebContents* web_contents) {
-#if defined(ENABLE_EXTENSIONS)
- const Extension* extension = GetExtensionForWebContents(web_contents);
- if (extension == NULL)
- return;
-
- DCHECK(web_contents);
- extensions::ProcessManager* pm = GetExtensionsProcessManager(web_contents);
- if (pm)
- pm->DecrementLazyKeepaliveCount(extension);
-#endif // defined(ENABLE_EXTENSIONS)
-}
-
-class ChromeJavaScriptDialogManager : public JavaScriptDialogManager {
+class DefaultExtensionsClient : public JavaScriptDialogExtensionsClient {
public:
- static ChromeJavaScriptDialogManager* GetInstance();
-
- void RunJavaScriptDialog(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(WebContents* web_contents,
- const base::string16& message_text,
- bool is_reload,
- const DialogClosedCallback& callback) override;
-
- bool HandleJavaScriptDialog(WebContents* web_contents,
- bool accept,
- const base::string16* prompt_override) override;
-
- void CancelActiveAndPendingDialogs(WebContents* web_contents) override;
-
- void WebContentsDestroyed(WebContents* web_contents) override;
+ DefaultExtensionsClient() {}
+ ~DefaultExtensionsClient() override {}
private:
- friend struct DefaultSingletonTraits<ChromeJavaScriptDialogManager>;
-
- ChromeJavaScriptDialogManager();
- ~ChromeJavaScriptDialogManager() override;
-
- base::string16 GetTitle(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(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_;
+ // JavaScriptDialogExtensionsClient:
+ void IncrementLazyKeepaliveCount(
+ content::WebContents* web_contents) override {}
+ void DecrementLazyKeepaliveCount(
+ content::WebContents* web_contents) override {}
+ bool GetExtensionName(content::WebContents* web_contents,
+ const GURL& origin_url,
+ std::string* name_out) override {
+ return false;
+ }
- DISALLOW_COPY_AND_ASSIGN(ChromeJavaScriptDialogManager);
+ DISALLOW_COPY_AND_ASSIGN(DefaultExtensionsClient);
};
+} // namespace
+
////////////////////////////////////////////////////////////////////////////////
-// ChromeJavaScriptDialogManager, public:
+// JavaScriptDialogManagerImpl, public:
-ChromeJavaScriptDialogManager::ChromeJavaScriptDialogManager() {
+JavaScriptDialogManagerImpl::JavaScriptDialogManagerImpl()
msw 2014/11/05 03:53:56 nit: reorder to match decl.
oshima 2014/11/05 21:42:19 Done.
+ : extensions_client_(new DefaultExtensionsClient) {
}
-ChromeJavaScriptDialogManager::~ChromeJavaScriptDialogManager() {
+JavaScriptDialogManagerImpl::~JavaScriptDialogManagerImpl() {
msw 2014/11/05 03:53:56 nit: reorder to match decl.
oshima 2014/11/05 21:42:19 Done.
}
// static
-ChromeJavaScriptDialogManager* ChromeJavaScriptDialogManager::GetInstance() {
- return Singleton<ChromeJavaScriptDialogManager>::get();
+JavaScriptDialogManagerImpl* JavaScriptDialogManagerImpl::GetInstance() {
+ return Singleton<JavaScriptDialogManagerImpl>::get();
}
-void ChromeJavaScriptDialogManager::RunJavaScriptDialog(
+void JavaScriptDialogManagerImpl::RunJavaScriptDialog(
WebContents* web_contents,
const GURL& origin_url,
const std::string& accept_lang,
@@ -185,7 +103,7 @@ void ChromeJavaScriptDialogManager::RunJavaScriptDialog(
base::string16 dialog_title =
GetTitle(web_contents, origin_url, accept_lang, is_alert);
- IncrementLazyKeepaliveCount(web_contents);
+ extensions_client_->IncrementLazyKeepaliveCount(web_contents);
AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog(
web_contents,
@@ -197,11 +115,11 @@ void ChromeJavaScriptDialogManager::RunJavaScriptDialog(
display_suppress_checkbox,
false, // is_before_unload_dialog
false, // is_reload
- base::Bind(&ChromeJavaScriptDialogManager::OnDialogClosed,
+ base::Bind(&JavaScriptDialogManagerImpl::OnDialogClosed,
base::Unretained(this), web_contents, callback)));
}
-void ChromeJavaScriptDialogManager::RunBeforeUnloadDialog(
+void JavaScriptDialogManagerImpl::RunBeforeUnloadDialog(
WebContents* web_contents,
const base::string16& message_text,
bool is_reload,
@@ -214,7 +132,7 @@ void ChromeJavaScriptDialogManager::RunBeforeUnloadDialog(
base::string16 full_message =
message_text + base::ASCIIToUTF16("\n\n") + footer;
- IncrementLazyKeepaliveCount(web_contents);
+ extensions_client_->IncrementLazyKeepaliveCount(web_contents);
AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog(
web_contents,
@@ -226,11 +144,11 @@ void ChromeJavaScriptDialogManager::RunBeforeUnloadDialog(
false, // display_suppress_checkbox
true, // is_before_unload_dialog
is_reload,
- base::Bind(&ChromeJavaScriptDialogManager::OnDialogClosed,
+ base::Bind(&JavaScriptDialogManagerImpl::OnDialogClosed,
base::Unretained(this), web_contents, callback)));
}
-bool ChromeJavaScriptDialogManager::HandleJavaScriptDialog(
+bool JavaScriptDialogManagerImpl::HandleJavaScriptDialog(
WebContents* web_contents,
bool accept,
const base::string16* prompt_override) {
@@ -252,13 +170,23 @@ bool ChromeJavaScriptDialogManager::HandleJavaScriptDialog(
return true;
}
-void ChromeJavaScriptDialogManager::WebContentsDestroyed(
+void JavaScriptDialogManagerImpl::WebContentsDestroyed(
WebContents* web_contents) {
CancelActiveAndPendingDialogs(web_contents);
javascript_dialog_extra_data_.erase(web_contents);
}
-base::string16 ChromeJavaScriptDialogManager::GetTitle(
+void JavaScriptDialogManagerImpl::SetNativeDialogFactory(
+ scoped_ptr<JavaScriptNativeDialogFactory> factory) {
+ native_dialog_factory_ = factory.Pass();
+}
+
+void JavaScriptDialogManagerImpl::SetExtensionsClient(
+ scoped_ptr<JavaScriptDialogExtensionsClient> extensions_client) {
+ extensions_client_ = extensions_client.Pass();
+}
+
+base::string16 JavaScriptDialogManagerImpl::GetTitle(
WebContents* web_contents,
const GURL& origin_url,
const std::string& accept_lang,
@@ -272,13 +200,10 @@ base::string16 ChromeJavaScriptDialogManager::GetTitle(
// For extensions, show the extension name, but only if the origin of
// the alert matches the top-level WebContents.
-#if defined(ENABLE_EXTENSIONS)
- const Extension* extension = GetExtensionForWebContents(web_contents);
- if (extension &&
- web_contents->GetLastCommittedURL().GetOrigin() == origin_url) {
- return base::UTF8ToUTF16(extension->name());
+ std::string name;
+ if (extensions_client_->GetExtensionName(web_contents, origin_url, &name)) {
msw 2014/11/05 03:53:55 nit: remove curly braces.
oshima 2014/11/05 21:42:19 Done.
+ return base::UTF8ToUTF16(name);
}
-#endif // defined(ENABLE_EXTENSIONS)
// Otherwise, return the formatted URL.
// In this case, force URL to have LTR directionality.
@@ -289,7 +214,7 @@ base::string16 ChromeJavaScriptDialogManager::GetTitle(
base::i18n::GetDisplayStringInLTRDirectionality(url_string));
}
-void ChromeJavaScriptDialogManager::CancelActiveAndPendingDialogs(
+void JavaScriptDialogManagerImpl::CancelActiveAndPendingDialogs(
WebContents* web_contents) {
AppModalDialogQueue* queue = AppModalDialogQueue::GetInstance();
AppModalDialog* active_dialog = queue->active_dialog();
@@ -302,7 +227,7 @@ void ChromeJavaScriptDialogManager::CancelActiveAndPendingDialogs(
}
}
-void ChromeJavaScriptDialogManager::OnDialogClosed(
+void JavaScriptDialogManagerImpl::OnDialogClosed(
WebContents* web_contents,
DialogClosedCallback callback,
bool success,
@@ -310,13 +235,7 @@ void ChromeJavaScriptDialogManager::OnDialogClosed(
// If an extension opened this dialog then the extension may shut down its
// lazy background page after the dialog closes. (Dialogs are closed before
// their WebContents is destroyed so |web_contents| is still valid here.)
- DecrementLazyKeepaliveCount(web_contents);
+ extensions_client_->DecrementLazyKeepaliveCount(web_contents);
callback.Run(success, user_input);
}
-
-} // namespace
-
-content::JavaScriptDialogManager* GetJavaScriptDialogManagerInstance() {
- return ChromeJavaScriptDialogManager::GetInstance();
-}

Powered by Google App Engine
This is Rietveld 408576698