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

Side by Side Diff: chrome/browser/ui/webui/ntp/app_launcher_handler.cc

Issue 9116037: [NTP4] Make TilePage and CardSlider evented to simplify code and fix page switcher bug (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: found one more bug when you leave a tab while mousing over page switcher Created 8 years, 11 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/webui/ntp/app_launcher_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" 5 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 content::Details<UnloadedExtensionInfo>(details)->extension; 298 content::Details<UnloadedExtensionInfo>(details)->extension;
299 if (!extension->is_app()) 299 if (!extension->is_app())
300 return; 300 return;
301 301
302 scoped_ptr<DictionaryValue> app_info(GetAppInfo(extension)); 302 scoped_ptr<DictionaryValue> app_info(GetAppInfo(extension));
303 scoped_ptr<base::FundamentalValue> uninstall_value( 303 scoped_ptr<base::FundamentalValue> uninstall_value(
304 Value::CreateBooleanValue( 304 Value::CreateBooleanValue(
305 content::Details<UnloadedExtensionInfo>(details)->reason == 305 content::Details<UnloadedExtensionInfo>(details)->reason ==
306 extension_misc::UNLOAD_REASON_UNINSTALL)); 306 extension_misc::UNLOAD_REASON_UNINSTALL));
307 if (app_info.get()) { 307 if (app_info.get()) {
308 scoped_ptr<base::FundamentalValue> from_page(
309 Value::CreateBooleanValue(!extension_id_prompting_.empty()));
308 web_ui()->CallJavascriptFunction( 310 web_ui()->CallJavascriptFunction(
309 "ntp4.appRemoved", *app_info, *uninstall_value); 311 "ntp4.appRemoved", *app_info, *uninstall_value, *from_page);
310 } 312 }
311 break; 313 break;
312 } 314 }
313 case chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED: 315 case chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED:
314 // The promo may not load until a couple seconds after the first NTP view, 316 // The promo may not load until a couple seconds after the first NTP view,
315 // so we listen for the load notification and notify the NTP when ready. 317 // so we listen for the load notification and notify the NTP when ready.
316 case chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED: 318 case chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED:
317 // TODO(estade): try to get rid of this inefficient operation. 319 // TODO(estade): Try to get rid of this inefficient operation.
318 HandleGetApps(NULL); 320 HandleGetApps(NULL);
319 break; 321 break;
320 case chrome::NOTIFICATION_PREF_CHANGED: { 322 case chrome::NOTIFICATION_PREF_CHANGED: {
321 DictionaryValue dictionary; 323 DictionaryValue dictionary;
322 FillAppDictionary(&dictionary); 324 FillAppDictionary(&dictionary);
323 web_ui()->CallJavascriptFunction("appsPrefChangeCallback", dictionary); 325 web_ui()->CallJavascriptFunction("appsPrefChangeCallback", dictionary);
324 break; 326 break;
325 } 327 }
326 case chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR: { 328 case chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR: {
327 CrxInstaller* crx_installer = content::Source<CrxInstaller>(source).ptr(); 329 CrxInstaller* crx_installer = content::Source<CrxInstaller>(source).ptr();
328 if (!Profile::FromWebUI(web_ui())->IsSameProfile( 330 if (!Profile::FromWebUI(web_ui())->IsSameProfile(
329 crx_installer->profile())) { 331 crx_installer->profile())) {
330 return; 332 return;
331 } 333 }
332 // Fall Through. 334 // Fall through.
333 } 335 }
334 case chrome::NOTIFICATION_EXTENSION_LOAD_ERROR: { 336 case chrome::NOTIFICATION_EXTENSION_LOAD_ERROR: {
335 attempted_bookmark_app_install_ = false; 337 attempted_bookmark_app_install_ = false;
336 break; 338 break;
337 } 339 }
338 default: 340 default:
339 NOTREACHED(); 341 NOTREACHED();
340 } 342 }
341 } 343 }
342 344
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 highlight_app_id_.clear(); 837 highlight_app_id_.clear();
836 } 838 }
837 839
838 // static 840 // static
839 void AppLauncherHandler::RegisterUserPrefs(PrefService* pref_service) { 841 void AppLauncherHandler::RegisterUserPrefs(PrefService* pref_service) {
840 // TODO(csharp): We will want this to be a syncable preference instead. 842 // TODO(csharp): We will want this to be a syncable preference instead.
841 pref_service->RegisterListPref(prefs::kNTPAppPageNames, 843 pref_service->RegisterListPref(prefs::kNTPAppPageNames,
842 PrefService::UNSYNCABLE_PREF); 844 PrefService::UNSYNCABLE_PREF);
843 } 845 }
844 846
847 void AppLauncherHandler::CleanupAfterUninstall() {
848 extension_id_prompting_.clear();
849 }
850
845 // static 851 // static
846 void AppLauncherHandler::RecordWebStoreLaunch(bool promo_active) { 852 void AppLauncherHandler::RecordWebStoreLaunch(bool promo_active) {
847 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppLaunchHistogram, 853 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppLaunchHistogram,
848 extension_misc::APP_LAUNCH_NTP_WEBSTORE, 854 extension_misc::APP_LAUNCH_NTP_WEBSTORE,
849 extension_misc::APP_LAUNCH_BUCKET_BOUNDARY); 855 extension_misc::APP_LAUNCH_BUCKET_BOUNDARY);
850 856
851 if (!promo_active) return; 857 if (!promo_active) return;
852 858
853 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram, 859 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram,
854 extension_misc::PROMO_LAUNCH_WEB_STORE, 860 extension_misc::PROMO_LAUNCH_WEB_STORE,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 926
921 // The extension can be uninstalled in another window while the UI was 927 // The extension can be uninstalled in another window while the UI was
922 // showing. Do nothing in that case. 928 // showing. Do nothing in that case.
923 const Extension* extension = 929 const Extension* extension =
924 extension_service_->GetExtensionById(extension_id_prompting_, true); 930 extension_service_->GetExtensionById(extension_id_prompting_, true);
925 if (!extension) 931 if (!extension)
926 return; 932 return;
927 933
928 extension_service_->UninstallExtension(extension_id_prompting_, 934 extension_service_->UninstallExtension(extension_id_prompting_,
929 false /* external_uninstall */, NULL); 935 false /* external_uninstall */, NULL);
930 936 CleanupAfterUninstall();
931 extension_id_prompting_ = "";
932 } 937 }
933 938
934 void AppLauncherHandler::ExtensionUninstallCanceled() { 939 void AppLauncherHandler::ExtensionUninstallCanceled() {
935 extension_id_prompting_ = ""; 940 CleanupAfterUninstall();
936 } 941 }
937 942
938 void AppLauncherHandler::InstallUIProceed() { 943 void AppLauncherHandler::InstallUIProceed() {
939 // Do the re-enable work here. 944 // Do the re-enable work here.
940 DCHECK(!extension_id_prompting_.empty()); 945 DCHECK(!extension_id_prompting_.empty());
941 946
942 // The extension can be uninstalled in another window while the UI was 947 // The extension can be uninstalled in another window while the UI was
943 // showing. Do nothing in that case. 948 // showing. Do nothing in that case.
944 const Extension* extension = 949 const Extension* extension =
945 extension_service_->GetExtensionById(extension_id_prompting_, true); 950 extension_service_->GetExtensionById(extension_id_prompting_, true);
(...skipping 16 matching lines...) Expand all
962 // We record the histograms here because ExtensionUninstallCanceled is also 967 // We record the histograms here because ExtensionUninstallCanceled is also
963 // called when the extension uninstall dialog is canceled. 968 // called when the extension uninstall dialog is canceled.
964 const Extension* extension = 969 const Extension* extension =
965 extension_service_->GetExtensionById(extension_id_prompting_, true); 970 extension_service_->GetExtensionById(extension_id_prompting_, true);
966 std::string histogram_name = user_initiated ? 971 std::string histogram_name = user_initiated ?
967 "Extensions.Permissions_ReEnableCancel" : 972 "Extensions.Permissions_ReEnableCancel" :
968 "Extensions.Permissions_ReEnableAbort"; 973 "Extensions.Permissions_ReEnableAbort";
969 ExtensionService::RecordPermissionMessagesHistogram( 974 ExtensionService::RecordPermissionMessagesHistogram(
970 extension, histogram_name.c_str()); 975 extension, histogram_name.c_str());
971 976
972 ExtensionUninstallCanceled(); 977 CleanupAfterUninstall();
973 } 978 }
974 979
975 ExtensionUninstallDialog* AppLauncherHandler::GetExtensionUninstallDialog() { 980 ExtensionUninstallDialog* AppLauncherHandler::GetExtensionUninstallDialog() {
976 if (!extension_uninstall_dialog_.get()) { 981 if (!extension_uninstall_dialog_.get()) {
977 extension_uninstall_dialog_.reset( 982 extension_uninstall_dialog_.reset(
978 ExtensionUninstallDialog::Create(Profile::FromWebUI(web_ui()), this)); 983 ExtensionUninstallDialog::Create(Profile::FromWebUI(web_ui()), this));
979 } 984 }
980 return extension_uninstall_dialog_.get(); 985 return extension_uninstall_dialog_.get();
981 } 986 }
982 987
983 ExtensionInstallUI* AppLauncherHandler::GetExtensionInstallUI() { 988 ExtensionInstallUI* AppLauncherHandler::GetExtensionInstallUI() {
984 if (!extension_install_ui_.get()) { 989 if (!extension_install_ui_.get()) {
985 extension_install_ui_.reset( 990 extension_install_ui_.reset(
986 new ExtensionInstallUI(Profile::FromWebUI(web_ui()))); 991 new ExtensionInstallUI(Profile::FromWebUI(web_ui())));
987 } 992 }
988 return extension_install_ui_.get(); 993 return extension_install_ui_.get();
989 } 994 }
990 995
991 void AppLauncherHandler::UninstallDefaultApps() { 996 void AppLauncherHandler::UninstallDefaultApps() {
992 AppsPromo* apps_promo = extension_service_->apps_promo(); 997 AppsPromo* apps_promo = extension_service_->apps_promo();
993 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); 998 const ExtensionIdSet& app_ids = apps_promo->old_default_apps();
994 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); 999 for (ExtensionIdSet::const_iterator iter = app_ids.begin();
995 iter != app_ids.end(); ++iter) { 1000 iter != app_ids.end(); ++iter) {
996 if (extension_service_->GetExtensionById(*iter, true)) 1001 if (extension_service_->GetExtensionById(*iter, true))
997 extension_service_->UninstallExtension(*iter, false, NULL); 1002 extension_service_->UninstallExtension(*iter, false, NULL);
998 } 1003 }
999 } 1004 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/app_launcher_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698