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

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

Issue 8689013: Remove TOUCH_UI specific new tab page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with trunk Created 9 years 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 dictionary->SetString("body", notification.body()); 86 dictionary->SetString("body", notification.body());
87 if (!notification.link_url().is_empty()) { 87 if (!notification.link_url().is_empty()) {
88 dictionary->SetString("linkUrl", notification.link_url().spec()); 88 dictionary->SetString("linkUrl", notification.link_url().spec());
89 dictionary->SetString("linkText", notification.link_text()); 89 dictionary->SetString("linkText", notification.link_text());
90 } 90 }
91 return dictionary; 91 return dictionary;
92 } 92 }
93 93
94 // static 94 // static
95 bool AppLauncherHandler::IsAppExcludedFromList(const Extension* extension) { 95 bool AppLauncherHandler::IsAppExcludedFromList(const Extension* extension) {
96 // Don't include the WebStore and the Cloud Print app.
97 // The WebStore launcher gets special treatment in ntp/apps.js.
98 // The Cloud Print app should never be displayed in the NTP. 96 // The Cloud Print app should never be displayed in the NTP.
99 bool ntp3 =
100 !NewTabUI::NTP4Enabled();
101 if (!extension->is_app() || 97 if (!extension->is_app() ||
102 (ntp3 && extension->id() == extension_misc::kWebStoreAppId) ||
103 (extension->id() == extension_misc::kCloudPrintAppId)) { 98 (extension->id() == extension_misc::kCloudPrintAppId)) {
104 return true; 99 return true;
105 } 100 }
106 return false; 101 return false;
107 } 102 }
108 103
109 void AppLauncherHandler::CreateAppInfo(const Extension* extension, 104 void AppLauncherHandler::CreateAppInfo(const Extension* extension,
110 const AppNotification* notification, 105 const AppNotification* notification,
111 ExtensionService* service, 106 ExtensionService* service,
112 DictionaryValue* value) { 107 DictionaryValue* value) {
113 bool enabled = service->IsExtensionEnabled(extension->id()) && 108 bool enabled = service->IsExtensionEnabled(extension->id()) &&
114 !service->GetTerminatedExtension(extension->id()); 109 !service->GetTerminatedExtension(extension->id());
115 bool icon_big_exists = true; 110 bool icon_big_exists = true;
116 // Instead of setting grayscale here, we do it in apps_page.js in NTP4. 111 // Instead of setting grayscale here, we do it in apps_page.js.
117 bool grayscale = NewTabUI::NTP4Enabled() ? false : !enabled;
118 GURL icon_big = 112 GURL icon_big =
119 ExtensionIconSource::GetIconURL(extension, 113 ExtensionIconSource::GetIconURL(extension,
120 Extension::EXTENSION_ICON_LARGE, 114 Extension::EXTENSION_ICON_LARGE,
121 ExtensionIconSet::MATCH_EXACTLY, 115 ExtensionIconSet::MATCH_EXACTLY,
122 grayscale, &icon_big_exists); 116 false, &icon_big_exists);
123 bool icon_small_exists = true; 117 bool icon_small_exists = true;
124 GURL icon_small = 118 GURL icon_small =
125 ExtensionIconSource::GetIconURL(extension, 119 ExtensionIconSource::GetIconURL(extension,
126 Extension::EXTENSION_ICON_BITTY, 120 Extension::EXTENSION_ICON_BITTY,
127 ExtensionIconSet::MATCH_BIGGER, 121 ExtensionIconSet::MATCH_BIGGER,
128 grayscale, &icon_small_exists); 122 false, &icon_small_exists);
129 123
130 value->Clear(); 124 value->Clear();
131 125
132 // The Extension class 'helpfully' wraps bidi control characters that 126 // The Extension class 'helpfully' wraps bidi control characters that
133 // impede our ability to determine directionality. 127 // impede our ability to determine directionality.
134 string16 name = UTF8ToUTF16(extension->name()); 128 string16 name = UTF8ToUTF16(extension->name());
135 base::i18n::UnadjustStringForLocaleDirection(&name); 129 base::i18n::UnadjustStringForLocaleDirection(&name);
136 NewTabUI::SetURLTitleAndDirection(value, name, extension->GetFullLaunchURL()); 130 NewTabUI::SetURLTitleAndDirection(value, name, extension->GetFullLaunchURL());
137 131
138 value->SetString("id", extension->id()); 132 value->SetString("id", extension->id());
139 value->SetString("description", extension->description()); 133 value->SetString("description", extension->description());
140 value->SetBoolean("enabled", enabled); 134 value->SetBoolean("enabled", enabled);
141 if (NewTabUI::NTP4Enabled() || enabled) 135 value->SetString("options_url", extension->options_url().spec());
142 value->SetString("options_url", extension->options_url().spec());
143 value->SetBoolean("can_uninstall", 136 value->SetBoolean("can_uninstall",
144 Extension::UserMayDisable(extension->location())); 137 Extension::UserMayDisable(extension->location()));
145 value->SetString("icon_big", icon_big.spec()); 138 value->SetString("icon_big", icon_big.spec());
146 value->SetBoolean("icon_big_exists", icon_big_exists); 139 value->SetBoolean("icon_big_exists", icon_big_exists);
147 value->SetString("icon_small", icon_small.spec()); 140 value->SetString("icon_small", icon_small.spec());
148 value->SetBoolean("icon_small_exists", icon_small_exists); 141 value->SetBoolean("icon_small_exists", icon_small_exists);
149 value->SetInteger("launch_container", extension->launch_container()); 142 value->SetInteger("launch_container", extension->launch_container());
150 ExtensionPrefs* prefs = service->extension_prefs(); 143 ExtensionPrefs* prefs = service->extension_prefs();
151 value->SetInteger("launch_type", 144 value->SetInteger("launch_type",
152 prefs->GetLaunchType(extension->id(), 145 prefs->GetLaunchType(extension->id(),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 base::Bind(&AppLauncherHandler::HandleRecordAppLaunchByURL, 220 base::Bind(&AppLauncherHandler::HandleRecordAppLaunchByURL,
228 base::Unretained(this))); 221 base::Unretained(this)));
229 web_ui_->RegisterMessageCallback("closeNotification", 222 web_ui_->RegisterMessageCallback("closeNotification",
230 base::Bind(&AppLauncherHandler::HandleNotificationClose, 223 base::Bind(&AppLauncherHandler::HandleNotificationClose,
231 base::Unretained(this))); 224 base::Unretained(this)));
232 } 225 }
233 226
234 void AppLauncherHandler::Observe(int type, 227 void AppLauncherHandler::Observe(int type,
235 const content::NotificationSource& source, 228 const content::NotificationSource& source,
236 const content::NotificationDetails& details) { 229 const content::NotificationDetails& details) {
237 if (type == chrome::NOTIFICATION_APP_INSTALLED_TO_NTP && 230 if (type == chrome::NOTIFICATION_APP_INSTALLED_TO_NTP) {
238 NewTabUI::NTP4Enabled()) {
239 highlight_app_id_ = *content::Details<const std::string>(details).ptr(); 231 highlight_app_id_ = *content::Details<const std::string>(details).ptr();
240 if (has_loaded_apps_) 232 if (has_loaded_apps_)
241 SetAppToBeHighlighted(); 233 SetAppToBeHighlighted();
242 return; 234 return;
243 } 235 }
244 236
245 if (ignore_changes_ || !has_loaded_apps_) 237 if (ignore_changes_ || !has_loaded_apps_)
246 return; 238 return;
247 239
248 switch (type) { 240 switch (type) {
(...skipping 17 matching lines...) Expand all
266 } 258 }
267 break; 259 break;
268 } 260 }
269 261
270 case chrome::NOTIFICATION_EXTENSION_LOADED: { 262 case chrome::NOTIFICATION_EXTENSION_LOADED: {
271 const Extension* extension = 263 const Extension* extension =
272 content::Details<const Extension>(details).ptr(); 264 content::Details<const Extension>(details).ptr();
273 if (!extension->is_app()) 265 if (!extension->is_app())
274 return; 266 return;
275 267
276 if (!NewTabUI::NTP4Enabled()) {
277 HandleGetApps(NULL);
278 break;
279 }
280
281 scoped_ptr<DictionaryValue> app_info(GetAppInfo(extension)); 268 scoped_ptr<DictionaryValue> app_info(GetAppInfo(extension));
282 if (app_info.get()) { 269 if (app_info.get()) {
283 ExtensionPrefs* prefs = extension_service_->extension_prefs(); 270 ExtensionPrefs* prefs = extension_service_->extension_prefs();
284 scoped_ptr<base::FundamentalValue> highlight(Value::CreateBooleanValue( 271 scoped_ptr<base::FundamentalValue> highlight(Value::CreateBooleanValue(
285 prefs->IsFromBookmark(extension->id()) && 272 prefs->IsFromBookmark(extension->id()) &&
286 attempted_bookmark_app_install_)); 273 attempted_bookmark_app_install_));
287 attempted_bookmark_app_install_ = false; 274 attempted_bookmark_app_install_ = false;
288 web_ui_->CallJavascriptFunction("ntp4.appAdded", *app_info, *highlight); 275 web_ui_->CallJavascriptFunction("ntp4.appAdded", *app_info, *highlight);
289 } 276 }
290 277
291 break; 278 break;
292 } 279 }
293 case chrome::NOTIFICATION_EXTENSION_UNLOADED: { 280 case chrome::NOTIFICATION_EXTENSION_UNLOADED: {
294 const Extension* extension = 281 const Extension* extension =
295 content::Details<UnloadedExtensionInfo>(details)->extension; 282 content::Details<UnloadedExtensionInfo>(details)->extension;
296 if (!extension->is_app()) 283 if (!extension->is_app())
297 return; 284 return;
298 285
299 if (!NewTabUI::NTP4Enabled()) {
300 HandleGetApps(NULL);
301 break;
302 }
303
304 scoped_ptr<DictionaryValue> app_info(GetAppInfo(extension)); 286 scoped_ptr<DictionaryValue> app_info(GetAppInfo(extension));
305 scoped_ptr<base::FundamentalValue> uninstall_value( 287 scoped_ptr<base::FundamentalValue> uninstall_value(
306 Value::CreateBooleanValue( 288 Value::CreateBooleanValue(
307 content::Details<UnloadedExtensionInfo>(details)->reason == 289 content::Details<UnloadedExtensionInfo>(details)->reason ==
308 extension_misc::UNLOAD_REASON_UNINSTALL)); 290 extension_misc::UNLOAD_REASON_UNINSTALL));
309 if (app_info.get()) { 291 if (app_info.get()) {
310 web_ui_->CallJavascriptFunction( 292 web_ui_->CallJavascriptFunction(
311 "ntp4.appRemoved", *app_info, *uninstall_value); 293 "ntp4.appRemoved", *app_info, *uninstall_value);
312 } 294 }
313 break; 295 break;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 // Making shortcut does not make sense on ChromeOS because it does not have 382 // Making shortcut does not make sense on ChromeOS because it does not have
401 // a desktop. 383 // a desktop.
402 dictionary->SetBoolean("disableCreateAppShortcut", true); 384 dictionary->SetBoolean("disableCreateAppShortcut", true);
403 #endif 385 #endif
404 386
405 dictionary->SetBoolean( 387 dictionary->SetBoolean(
406 "showLauncher", 388 "showLauncher",
407 extension_service_->apps_promo()->ShouldShowAppLauncher( 389 extension_service_->apps_promo()->ShouldShowAppLauncher(
408 extension_service_->GetAppIds())); 390 extension_service_->GetAppIds()));
409 391
410 if (NewTabUI::NTP4Enabled()) { 392 PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs();
411 PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs(); 393 const ListValue* app_page_names = prefs->GetList(prefs::kNTPAppPageNames);
412 const ListValue* app_page_names = prefs->GetList(prefs::kNTPAppPageNames); 394 if (!app_page_names || !app_page_names->GetSize()) {
413 if (!app_page_names || !app_page_names->GetSize()) { 395 ListPrefUpdate update(prefs, prefs::kNTPAppPageNames);
414 ListPrefUpdate update(prefs, prefs::kNTPAppPageNames); 396 ListValue* list = update.Get();
415 ListValue* list = update.Get(); 397 list->Set(0, Value::CreateStringValue(
416 list->Set(0, Value::CreateStringValue( 398 l10n_util::GetStringUTF16(IDS_APP_DEFAULT_PAGE_NAME)));
417 l10n_util::GetStringUTF16(IDS_APP_DEFAULT_PAGE_NAME))); 399 dictionary->Set("appPageNames",
418 dictionary->Set("appPageNames", 400 static_cast<ListValue*>(list->DeepCopy()));
419 static_cast<ListValue*>(list->DeepCopy())); 401 } else {
420 } else { 402 dictionary->Set("appPageNames",
421 dictionary->Set("appPageNames", 403 static_cast<ListValue*>(app_page_names->DeepCopy()));
422 static_cast<ListValue*>(app_page_names->DeepCopy()));
423 }
424 } 404 }
425 } 405 }
426 406
427 DictionaryValue* AppLauncherHandler::GetAppInfo(const Extension* extension) { 407 DictionaryValue* AppLauncherHandler::GetAppInfo(const Extension* extension) {
428 AppNotificationManager* notification_manager = 408 AppNotificationManager* notification_manager =
429 extension_service_->app_notification_manager(); 409 extension_service_->app_notification_manager();
430 DictionaryValue* app_info = new DictionaryValue(); 410 DictionaryValue* app_info = new DictionaryValue();
431 // CreateAppInfo can change the extension prefs. 411 // CreateAppInfo can change the extension prefs.
432 AutoReset<bool> auto_reset(&ignore_changes_, true); 412 AutoReset<bool> auto_reset(&ignore_changes_, true);
433 CreateAppInfo(extension, 413 CreateAppInfo(extension,
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 // If the user pressed special keys when clicking, override the saved 529 // If the user pressed special keys when clicking, override the saved
550 // preference for launch container. 530 // preference for launch container.
551 bool middle_button = (button == 1.0); 531 bool middle_button = (button == 1.0);
552 WindowOpenDisposition disposition = 532 WindowOpenDisposition disposition =
553 disposition_utils::DispositionFromClick(middle_button, alt_key, 533 disposition_utils::DispositionFromClick(middle_button, alt_key,
554 ctrl_key, meta_key, shift_key); 534 ctrl_key, meta_key, shift_key);
555 535
556 if (extension_id != extension_misc::kWebStoreAppId) { 536 if (extension_id != extension_misc::kWebStoreAppId) {
557 RecordAppLaunchByID(launch_bucket); 537 RecordAppLaunchByID(launch_bucket);
558 extension_service_->apps_promo()->ExpireDefaultApps(); 538 extension_service_->apps_promo()->ExpireDefaultApps();
559 } else if (NewTabUI::NTP4Enabled()) { 539 } else {
560 RecordWebStoreLaunch(url.find("chrome-ntp-promo") != std::string::npos); 540 RecordWebStoreLaunch(url.find("chrome-ntp-promo") != std::string::npos);
561 } 541 }
562 542
563 if (disposition == NEW_FOREGROUND_TAB || disposition == NEW_BACKGROUND_TAB) { 543 if (disposition == NEW_FOREGROUND_TAB || disposition == NEW_BACKGROUND_TAB) {
564 // TODO(jamescook): Proper support for background tabs. 544 // TODO(jamescook): Proper support for background tabs.
565 Browser::OpenApplication( 545 Browser::OpenApplication(
566 profile, extension, extension_misc::LAUNCH_TAB, GURL(url), disposition); 546 profile, extension, extension_misc::LAUNCH_TAB, GURL(url), disposition);
567 } else if (disposition == NEW_WINDOW) { 547 } else if (disposition == NEW_WINDOW) {
568 // Force a new window open. 548 // Force a new window open.
569 Browser::OpenApplication( 549 Browser::OpenApplication(
(...skipping 28 matching lines...) Expand all
598 double launch_type; 578 double launch_type;
599 CHECK(args->GetString(0, &extension_id)); 579 CHECK(args->GetString(0, &extension_id));
600 CHECK(args->GetDouble(1, &launch_type)); 580 CHECK(args->GetDouble(1, &launch_type));
601 581
602 const Extension* extension = 582 const Extension* extension =
603 extension_service_->GetExtensionById(extension_id, true); 583 extension_service_->GetExtensionById(extension_id, true);
604 if (!extension) 584 if (!extension)
605 return; 585 return;
606 586
607 // Don't update the page; it already knows about the launch type change. 587 // Don't update the page; it already knows about the launch type change.
608 scoped_ptr<AutoReset<bool> > auto_reset; 588 AutoReset<bool> auto_reset(&ignore_changes_, true);
609 if (NewTabUI::NTP4Enabled())
610 auto_reset.reset(new AutoReset<bool>(&ignore_changes_, true));
611 589
612 extension_service_->extension_prefs()->SetLaunchType( 590 extension_service_->extension_prefs()->SetLaunchType(
613 extension_id, 591 extension_id,
614 static_cast<ExtensionPrefs::LaunchType>( 592 static_cast<ExtensionPrefs::LaunchType>(
615 static_cast<int>(launch_type))); 593 static_cast<int>(launch_type)));
616 } 594 }
617 595
618 void AppLauncherHandler::HandleUninstallApp(const ListValue* args) { 596 void AppLauncherHandler::HandleUninstallApp(const ListValue* args) {
619 std::string extension_id; 597 std::string extension_id;
620 CHECK(args->GetString(0, &extension_id)); 598 CHECK(args->GetString(0, &extension_id));
621 599
622 const Extension* extension = extension_service_->GetExtensionById( 600 const Extension* extension = extension_service_->GetExtensionById(
623 extension_id, true); 601 extension_id, true);
624 if (!extension) 602 if (!extension)
625 return; 603 return;
626 604
627 if (!Extension::UserMayDisable(extension->location())) { 605 if (!Extension::UserMayDisable(extension->location())) {
628 LOG(ERROR) << "Attempt to uninstall an extension that is non-usermanagable " 606 LOG(ERROR) << "Attempt to uninstall an extension that is non-usermanagable "
629 << "was made. Extension id : " << extension->id(); 607 << "was made. Extension id : " << extension->id();
630 return; 608 return;
631 } 609 }
632 if (!extension_id_prompting_.empty()) 610 if (!extension_id_prompting_.empty())
633 return; // Only one prompt at a time. 611 return; // Only one prompt at a time.
634 612
635 extension_id_prompting_ = extension_id; 613 extension_id_prompting_ = extension_id;
636 614
637 bool dont_confirm = false; 615 bool dont_confirm = false;
638 if (args->GetBoolean(1, &dont_confirm) && dont_confirm) { 616 if (args->GetBoolean(1, &dont_confirm) && dont_confirm) {
639 scoped_ptr<AutoReset<bool> > auto_reset; 617 AutoReset<bool> auto_reset(&ignore_changes_, true);
640 if (NewTabUI::NTP4Enabled())
641 auto_reset.reset(new AutoReset<bool>(&ignore_changes_, true));
642 ExtensionUninstallAccepted(); 618 ExtensionUninstallAccepted();
643 } else { 619 } else {
644 GetExtensionUninstallDialog()->ConfirmUninstall(extension); 620 GetExtensionUninstallDialog()->ConfirmUninstall(extension);
645 } 621 }
646 } 622 }
647 623
648 void AppLauncherHandler::HandleHideAppsPromo(const ListValue* args) { 624 void AppLauncherHandler::HandleHideAppsPromo(const ListValue* args) {
649 // If the user has intentionally hidden the promotion, we'll uninstall all the 625 // If the user has intentionally hidden the promotion, we'll uninstall all the
650 // default apps (we know the user hasn't installed any apps on their own at 626 // default apps (we know the user hasn't installed any apps on their own at
651 // this point, or the promotion wouldn't have been shown). 627 // this point, or the promotion wouldn't have been shown).
652 // TODO(estade): this isn't used right now as we sort out the future of the 628 // TODO(estade): this isn't used right now as we sort out the future of the
653 // apps promo on ntp4. 629 // apps promo on ntp4.
654 if (NewTabUI::NTP4Enabled()) { 630 UninstallDefaultApps();
655 UninstallDefaultApps(); 631 extension_service_->apps_promo()->HidePromo();
656 extension_service_->apps_promo()->HidePromo();
657 } else {
658 // TODO(estade): remove all this. NTP3 uninstalled all the default apps then
659 // refreshed the entire NTP, we don't have to jump through these hoops for
660 // NTP4 because each app uninstall is handled separately without reloading
661 // the entire page.
662 ignore_changes_ = true;
663 UninstallDefaultApps();
664 extension_service_->apps_promo()->HidePromo();
665 ignore_changes_ = false;
666 HandleGetApps(NULL);
667 }
668 } 632 }
669 633
670 void AppLauncherHandler::HandleCreateAppShortcut(const ListValue* args) { 634 void AppLauncherHandler::HandleCreateAppShortcut(const ListValue* args) {
671 std::string extension_id; 635 std::string extension_id;
672 CHECK(args->GetString(0, &extension_id)); 636 CHECK(args->GetString(0, &extension_id));
673 637
674 const Extension* extension = 638 const Extension* extension =
675 extension_service_->GetExtensionById(extension_id, true); 639 extension_service_->GetExtensionById(extension_id, true);
676 if (!extension) 640 if (!extension)
677 return; 641 return;
(...skipping 15 matching lines...) Expand all
693 CHECK(args->GetList(1, &app_order)); 657 CHECK(args->GetList(1, &app_order));
694 658
695 std::vector<std::string> extension_ids; 659 std::vector<std::string> extension_ids;
696 for (size_t i = 0; i < app_order->GetSize(); ++i) { 660 for (size_t i = 0; i < app_order->GetSize(); ++i) {
697 std::string value; 661 std::string value;
698 if (app_order->GetString(i, &value)) 662 if (app_order->GetString(i, &value))
699 extension_ids.push_back(value); 663 extension_ids.push_back(value);
700 } 664 }
701 665
702 // Don't update the page; it already knows the apps have been reordered. 666 // Don't update the page; it already knows the apps have been reordered.
703 scoped_ptr<AutoReset<bool> > auto_reset; 667 AutoReset<bool> auto_reset(&ignore_changes_, true);
704 if (NewTabUI::NTP4Enabled())
705 auto_reset.reset(new AutoReset<bool>(&ignore_changes_, true));
706
707 extension_service_->extension_prefs()->SetAppDraggedByUser(dragged_app_id); 668 extension_service_->extension_prefs()->SetAppDraggedByUser(dragged_app_id);
708 extension_service_->extension_prefs()->SetAppLauncherOrder(extension_ids); 669 extension_service_->extension_prefs()->SetAppLauncherOrder(extension_ids);
709 } 670 }
710 671
711 void AppLauncherHandler::HandleSetPageIndex(const ListValue* args) { 672 void AppLauncherHandler::HandleSetPageIndex(const ListValue* args) {
712 std::string extension_id; 673 std::string extension_id;
713 double page_index; 674 double page_index;
714 CHECK(args->GetString(0, &extension_id)); 675 CHECK(args->GetString(0, &extension_id));
715 CHECK(args->GetDouble(1, &page_index)); 676 CHECK(args->GetDouble(1, &page_index));
716 677
717 // Don't update the page; it already knows the apps have been reordered. 678 // Don't update the page; it already knows the apps have been reordered.
718 scoped_ptr<AutoReset<bool> > auto_reset; 679 AutoReset<bool> auto_reset(&ignore_changes_, true);
719 if (NewTabUI::NTP4Enabled())
720 auto_reset.reset(new AutoReset<bool>(&ignore_changes_, true));
721
722 extension_service_->extension_prefs()->SetPageIndex(extension_id, 680 extension_service_->extension_prefs()->SetPageIndex(extension_id,
723 static_cast<int>(page_index)); 681 static_cast<int>(page_index));
724 } 682 }
725 683
726 void AppLauncherHandler::HandlePromoSeen(const ListValue* args) { 684 void AppLauncherHandler::HandlePromoSeen(const ListValue* args) {
727 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram, 685 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram,
728 extension_misc::PROMO_SEEN, 686 extension_misc::PROMO_SEEN,
729 extension_misc::PROMO_BUCKET_BOUNDARY); 687 extension_misc::PROMO_BUCKET_BOUNDARY);
730 } 688 }
731 689
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 953
996 void AppLauncherHandler::UninstallDefaultApps() { 954 void AppLauncherHandler::UninstallDefaultApps() {
997 AppsPromo* apps_promo = extension_service_->apps_promo(); 955 AppsPromo* apps_promo = extension_service_->apps_promo();
998 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); 956 const ExtensionIdSet& app_ids = apps_promo->old_default_apps();
999 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); 957 for (ExtensionIdSet::const_iterator iter = app_ids.begin();
1000 iter != app_ids.end(); ++iter) { 958 iter != app_ids.end(); ++iter) {
1001 if (extension_service_->GetExtensionById(*iter, true)) 959 if (extension_service_->GetExtensionById(*iter, true))
1002 extension_service_->UninstallExtension(*iter, false, NULL); 960 extension_service_->UninstallExtension(*iter, false, NULL);
1003 } 961 }
1004 } 962 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698