diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-12 08:08:23 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-12 08:08:23 +0000 |
commit | eda3c3641e9f0a8877aff9d0743d3e582e0cdbd9 (patch) | |
tree | dc1d0c452631e59ce89ce039a649b4e6d5ead62d | |
parent | a3010332c2dcf4ca8f30c8b21a459b67f90b7f24 (diff) | |
download | chromium_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.cc | 38 | ||||
-rw-r--r-- | chrome/browser/dom_ui/shown_sections_handler.h | 6 | ||||
-rw-r--r-- | chrome/browser/extensions/extensions_service.cc | 2 |
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); |