summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-12 08:08:23 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-12 08:08:23 +0000
commiteda3c3641e9f0a8877aff9d0743d3e582e0cdbd9 (patch)
treedc1d0c452631e59ce89ce039a649b4e6d5ead62d
parenta3010332c2dcf4ca8f30c8b21a459b67f90b7f24 (diff)
downloadchromium_src-eda3c3641e9f0a8877aff9d0743d3e582e0cdbd9.zip
chromium_src-eda3c3641e9f0a8877aff9d0743d3e582e0cdbd9.tar.gz
chromium_src-eda3c3641e9f0a8877aff9d0743d3e582e0cdbd9.tar.bz2
Open apps section on NTP when new app get installed
BUG=http://code.google.com/p/chromium-os/issues/detail?id=8323 TEST=manual Review URL: http://codereview.chromium.org/4658006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65917 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/dom_ui/shown_sections_handler.cc38
-rw-r--r--chrome/browser/dom_ui/shown_sections_handler.h6
-rw-r--r--chrome/browser/extensions/extensions_service.cc2
3 files changed, 25 insertions, 21 deletions
diff --git a/chrome/browser/dom_ui/shown_sections_handler.cc b/chrome/browser/dom_ui/shown_sections_handler.cc
index 189c1c3..93a672f 100644
--- a/chrome/browser/dom_ui/shown_sections_handler.cc
+++ b/chrome/browser/dom_ui/shown_sections_handler.cc
@@ -14,7 +14,6 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/notification_details.h"
-#include "chrome/common/notification_source.h"
#include "chrome/common/notification_type.h"
#include "chrome/common/pref_names.h"
@@ -55,9 +54,6 @@ ShownSectionsHandler::ShownSectionsHandler(PrefService* pref_service)
}
void ShownSectionsHandler::RegisterMessages() {
- notification_registrar_.Add(this, NotificationType::EXTENSION_INSTALLED,
- Source<Profile>(dom_ui_->GetProfile()));
-
dom_ui_->RegisterMessageCallback("getShownSections",
NewCallback(this, &ShownSectionsHandler::HandleGetShownSections));
dom_ui_->RegisterMessageCallback("setShownSections",
@@ -73,21 +69,6 @@ void ShownSectionsHandler::Observe(NotificationType type,
int sections = pref_service_->GetInteger(prefs::kNTPShownSections);
FundamentalValue sections_value(sections);
dom_ui_->CallJavascriptFunction(L"setShownSections", sections_value);
- } else if (type == NotificationType::EXTENSION_INSTALLED) {
- if (Details<const Extension>(details).ptr()->is_app()) {
- int mode = pref_service_->GetInteger(prefs::kNTPShownSections);
-
- // De-minimize the apps section.
- mode &= ~MINIMIZED_APPS;
-
- // Hide any open sections.
- mode &= ~ALL_SECTIONS_MASK;
-
- // Show the apps section.
- mode |= APPS;
-
- pref_service_->SetInteger(prefs::kNTPShownSections, mode);
- }
} else {
NOTREACHED();
}
@@ -137,3 +118,22 @@ void ShownSectionsHandler::MigrateUserPrefs(PrefService* pref_service,
if (changed)
pref_service->SetInteger(prefs::kNTPShownSections, shown_sections);
}
+
+// static
+void ShownSectionsHandler::OnExtensionInstalled(PrefService* prefs,
+ const Extension* extension) {
+ if (extension->is_app()) {
+ int mode = prefs->GetInteger(prefs::kNTPShownSections);
+
+ // De-minimize the apps section.
+ mode &= ~MINIMIZED_APPS;
+
+ // Hide any open sections.
+ mode &= ~ALL_SECTIONS_MASK;
+
+ // Show the apps section.
+ mode |= APPS;
+
+ prefs->SetInteger(prefs::kNTPShownSections, mode);
+ }
+}
diff --git a/chrome/browser/dom_ui/shown_sections_handler.h b/chrome/browser/dom_ui/shown_sections_handler.h
index e82c3fb..ad227b4 100644
--- a/chrome/browser/dom_ui/shown_sections_handler.h
+++ b/chrome/browser/dom_ui/shown_sections_handler.h
@@ -8,10 +8,10 @@
#include "chrome/browser/dom_ui/dom_ui.h"
#include "chrome/common/notification_observer.h"
-#include "chrome/common/notification_registrar.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
class DOMUI;
+class Extension;
class Value;
class PrefService;
@@ -63,10 +63,12 @@ class ShownSectionsHandler : public DOMMessageHandler,
int old_pref_version,
int new_pref_version);
+ static void OnExtensionInstalled(PrefService* prefs,
+ const Extension* extension);
+
private:
PrefService* pref_service_;
PrefChangeRegistrar pref_registrar_;
- NotificationRegistrar notification_registrar_;
DISALLOW_COPY_AND_ASSIGN(ShownSectionsHandler);
};
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc
index f58f5da..17ea2e6 100644
--- a/chrome/browser/extensions/extensions_service.cc
+++ b/chrome/browser/extensions/extensions_service.cc
@@ -22,6 +22,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_thread.h"
#include "chrome/browser/debugger/devtools_manager.h"
+#include "chrome/browser/dom_ui/shown_sections_handler.h"
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/default_apps.h"
#include "chrome/browser/extensions/extension_accessibility_api.h"
@@ -1689,6 +1690,7 @@ void ExtensionsService::OnExtensionInstalled(const Extension* extension,
UMA_HISTOGRAM_ENUMERATION("Extensions.InstallType",
extension->GetHistogramType(), 100);
+ ShownSectionsHandler::OnExtensionInstalled(profile_->GetPrefs(), extension);
extension_prefs_->OnExtensionInstalled(
extension, initial_state, initial_enable_incognito);