"Details" button in extensions alert launches prefs in tab, not window.
BUG=94494
TEST=manual.
Review URL: http://codereview.chromium.org/8216032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105179 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 66828ec..8fcddd30 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -8,8 +8,8 @@
#include <set>
#include "base/basictypes.h"
-#include "base/command_line.h"
#include "base/callback.h"
+#include "base/command_line.h"
#include "base/file_util.h"
#include "base/json/json_value_serializer.h"
#include "base/logging.h"
@@ -63,6 +63,7 @@
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/global_error_service.h"
#include "chrome/browser/ui/global_error_service_factory.h"
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
@@ -2209,19 +2210,26 @@
global_error->set_cancel_callback(
base::Bind(&ExtensionService::HandleExtensionAlertDetails,
base::Unretained(this)));
- GlobalErrorServiceFactory::GetForProfile(profile_)->AddGlobalError(
- global_error.release());
+ ShowExtensionAlert(global_error.release());
} else {
// First run. Just acknowledge all the extensions, silently, by
// shortcutting the display of the UI and going straight to the
// callback for pressing the Accept button.
- HandleExtensionAlertAccept(*global_error.get());
+ HandleExtensionAlertAccept(*global_error.get(), NULL);
}
}
}
+void ExtensionService::ShowExtensionAlert(ExtensionGlobalError* global_error) {
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ if (browser) {
+ global_error->ShowBubbleView(browser);
+ }
+}
+
void ExtensionService::HandleExtensionAlertAccept(
- const ExtensionGlobalError& global_error) {
+ const ExtensionGlobalError& global_error, Browser* browser) {
const ExtensionIdSet *extension_ids =
global_error.get_external_extension_ids();
for (ExtensionIdSet::const_iterator iter = extension_ids->begin();
@@ -2241,8 +2249,10 @@
}
void ExtensionService::HandleExtensionAlertDetails(
- const ExtensionGlobalError& global_error) {
- Browser::OpenExtensionsWindow(profile_);
+ const ExtensionGlobalError& global_error, Browser* browser) {
+ if (browser) {
+ browser->ShowExtensionsTab();
+ }
}
void ExtensionService::UnloadExtension(