Index: chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc |
diff --git a/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc b/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc |
index 417a2898d0d5c5ca24a6a3f7a3de5ec48c670b12..a61c396d3f3c09606f075ea179fb9ddc26615376 100644 |
--- a/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc |
+++ b/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc |
@@ -18,47 +18,48 @@ |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/content_client.h" |
#include "content/public/common/javascript_message_type.h" |
-#include "extensions/browser/extension_system.h" |
-#include "extensions/browser/process_manager.h" |
#include "grit/generated_resources.h" |
#include "net/base/net_util.h" |
#include "ui/base/l10n/l10n_util.h" |
+#if defined(ENABLE_EXTENSIONS) |
+#include "extensions/browser/extension_system.h" |
+#include "extensions/browser/process_manager.h" |
+#endif // defined(ENABLE_EXTENSIONS) |
+ |
using content::BrowserContext; |
using content::JavaScriptDialogManager; |
using content::WebContents; |
+ |
+#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) { |
-#if defined(ENABLE_EXTENSIONS) |
return extensions::ExtensionSystem::Get( |
web_contents->GetBrowserContext())->process_manager(); |
-#else |
- return NULL; |
-#endif // defined(ENABLE_EXTENSIONS) |
} |
// 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) { |
-#if defined(ENABLE_EXTENSIONS) |
extensions::ProcessManager* pm = GetExtensionsProcessManager(web_contents); |
return pm->GetExtensionForRenderViewHost(web_contents->GetRenderViewHost()); |
-#else |
- return NULL; |
-#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(const Extension* extension, |
- WebContents* web_contents) { |
- DCHECK(extension); |
+void IncrementLazyKeepaliveCount(WebContents* web_contents) { |
Lei Zhang
2014/08/22 23:19:01
This can be a no-op function when extensions are d
|
+ const Extension* extension = GetExtensionForWebContents(web_contents); |
+ if (extension == NULL) |
+ return; |
+ |
DCHECK(web_contents); |
extensions::ProcessManager* pm = GetExtensionsProcessManager(web_contents); |
if (pm) |
@@ -67,14 +68,17 @@ void IncrementLazyKeepaliveCount(const Extension* extension, |
// Allows an |extension| to shut down its lazy background page after a dialog |
// closes (if nothing else is keeping it open). |
-void DecrementLazyKeepaliveCount(const Extension* extension, |
- WebContents* web_contents) { |
- DCHECK(extension); |
+void DecrementLazyKeepaliveCount(WebContents* web_contents) { |
+ 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 { |
public: |
@@ -181,9 +185,9 @@ void ChromeJavaScriptDialogManager::RunJavaScriptDialog( |
base::string16 dialog_title = |
GetTitle(web_contents, origin_url, accept_lang, is_alert); |
- const Extension* extension = GetExtensionForWebContents(web_contents); |
- if (extension) |
- IncrementLazyKeepaliveCount(extension, web_contents); |
+#if defined(ENABLE_EXTENSIONS) |
+ IncrementLazyKeepaliveCount(web_contents); |
+#endif // defined(ENABLE_EXTENSIONS) |
AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog( |
web_contents, |
@@ -212,9 +216,9 @@ void ChromeJavaScriptDialogManager::RunBeforeUnloadDialog( |
base::string16 full_message = |
message_text + base::ASCIIToUTF16("\n\n") + footer; |
- const Extension* extension = GetExtensionForWebContents(web_contents); |
- if (extension) |
- IncrementLazyKeepaliveCount(extension, web_contents); |
+#if defined(ENABLE_EXTENSIONS) |
+ IncrementLazyKeepaliveCount(web_contents); |
+#endif // defined(ENABLE_EXTENSIONS) |
AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog( |
web_contents, |
@@ -272,11 +276,13 @@ 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()); |
} |
+#endif // defined(ENABLE_EXTENSIONS) |
// Otherwise, return the formatted URL. |
// In this case, force URL to have LTR directionality. |
@@ -308,9 +314,9 @@ 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.) |
- const Extension* extension = GetExtensionForWebContents(web_contents); |
- if (extension) |
- DecrementLazyKeepaliveCount(extension, web_contents); |
+#if defined(ENABLE_EXTENSIONS) |
+ DecrementLazyKeepaliveCount(web_contents); |
+#endif // defined(ENABLE_EXTENSIONS) |
callback.Run(success, user_input); |
} |