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

Side by Side Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc

Issue 2290603002: Enhance chrome.app.window API for shelf integration with pinning support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review v3 Created 4 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/ash/launcher/chrome_launcher_controller_impl.h" 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 } 347 }
348 348
349 void ChromeLauncherControllerImpl::CloseLauncherItem(ash::ShelfID id) { 349 void ChromeLauncherControllerImpl::CloseLauncherItem(ash::ShelfID id) {
350 CHECK(id); 350 CHECK(id);
351 if (IsPinned(id)) { 351 if (IsPinned(id)) {
352 // Create a new shortcut controller. 352 // Create a new shortcut controller.
353 IDToItemControllerMap::iterator iter = id_to_item_controller_map_.find(id); 353 IDToItemControllerMap::iterator iter = id_to_item_controller_map_.find(id);
354 CHECK(iter != id_to_item_controller_map_.end()); 354 CHECK(iter != id_to_item_controller_map_.end());
355 SetItemStatus(id, ash::STATUS_CLOSED); 355 SetItemStatus(id, ash::STATUS_CLOSED);
356 std::string app_id = iter->second->app_id(); 356 std::string app_id = iter->second->app_id();
357 iter->second = AppShortcutLauncherItemController::Create(app_id, this); 357 std::string launch_id = iter->second->launch_id();
358 iter->second =
359 AppShortcutLauncherItemController::Create(app_id, launch_id, this);
358 iter->second->set_shelf_id(id); 360 iter->second->set_shelf_id(id);
359 // Existing controller is destroyed and replaced by registering again. 361 // Existing controller is destroyed and replaced by registering again.
360 SetShelfItemDelegate(id, iter->second); 362 SetShelfItemDelegate(id, iter->second);
361 } else { 363 } else {
362 LauncherItemClosed(id); 364 LauncherItemClosed(id);
363 } 365 }
364 } 366 }
365 367
366 void ChromeLauncherControllerImpl::Pin(ash::ShelfID id) { 368 void ChromeLauncherControllerImpl::Pin(ash::ShelfID id) {
367 DCHECK(HasShelfIDToAppIDMapping(id)); 369 DCHECK(HasShelfIDToAppIDMapping(id));
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 ash::ShelfID id = GetShelfIDForAppID(app_id); 495 ash::ShelfID id = GetShelfIDForAppID(app_id);
494 if (id) { 496 if (id) {
495 LauncherItemController* controller = GetLauncherItemController(id); 497 LauncherItemController* controller = GetLauncherItemController(id);
496 controller->Activate(source); 498 controller->Activate(source);
497 return; 499 return;
498 } 500 }
499 501
500 // Create a temporary application launcher item and use it to see if there are 502 // Create a temporary application launcher item and use it to see if there are
501 // running instances. 503 // running instances.
502 std::unique_ptr<AppShortcutLauncherItemController> app_controller( 504 std::unique_ptr<AppShortcutLauncherItemController> app_controller(
503 AppShortcutLauncherItemController::Create(app_id, this)); 505 AppShortcutLauncherItemController::Create(app_id, "", this));
504 if (!app_controller->GetRunningApplications().empty()) 506 if (!app_controller->GetRunningApplications().empty())
505 app_controller->Activate(source); 507 app_controller->Activate(source);
506 else 508 else
507 LaunchApp(app_id, source, event_flags); 509 LaunchApp(app_id, source, event_flags);
508 } 510 }
509 511
510 extensions::LaunchType ChromeLauncherControllerImpl::GetLaunchType( 512 extensions::LaunchType ChromeLauncherControllerImpl::GetLaunchType(
511 ash::ShelfID id) { 513 ash::ShelfID id) {
512 const Extension* extension = 514 const Extension* extension =
513 GetExtensionForAppID(GetAppIDForShelfID(id), profile_); 515 GetExtensionForAppID(GetAppIDForShelfID(id), profile_);
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 } 890 }
889 891
890 void ChromeLauncherControllerImpl::OnShelfAutoHideStateChanged( 892 void ChromeLauncherControllerImpl::OnShelfAutoHideStateChanged(
891 ash::WmShelf* shelf) {} 893 ash::WmShelf* shelf) {}
892 894
893 void ChromeLauncherControllerImpl::OnShelfVisibilityStateChanged( 895 void ChromeLauncherControllerImpl::OnShelfVisibilityStateChanged(
894 ash::WmShelf* shelf) {} 896 ash::WmShelf* shelf) {}
895 897
896 ash::ShelfID ChromeLauncherControllerImpl::GetShelfIDForAppID( 898 ash::ShelfID ChromeLauncherControllerImpl::GetShelfIDForAppID(
897 const std::string& app_id) { 899 const std::string& app_id) {
898 for (IDToItemControllerMap::const_iterator i = 900 // Get shelf id for app_id and empty launch_id.
899 id_to_item_controller_map_.begin(); 901 return GetShelfIDForAppIDAndLaunchID(app_id, "");
900 i != id_to_item_controller_map_.end(); ++i) { 902 }
901 if (i->second->type() == LauncherItemController::TYPE_APP_PANEL) 903
904 ash::ShelfID ChromeLauncherControllerImpl::GetShelfIDForAppIDAndLaunchID(
905 const std::string& app_id,
906 const std::string& launch_id) {
907 for (const auto& id_to_item_controller_pair : id_to_item_controller_map_) {
908 if (id_to_item_controller_pair.second->type() ==
909 LauncherItemController::TYPE_APP_PANEL)
902 continue; // Don't include panels 910 continue; // Don't include panels
903 if (i->second->app_id() == app_id) 911 if ((id_to_item_controller_pair.second->app_id() == app_id) &&
James Cook 2016/09/01 04:27:52 nit: no need for extra () around == condition
Andra Paraschiv 2016/09/01 08:27:25 Done.
904 return i->first; 912 (id_to_item_controller_pair.second->launch_id() == launch_id)) {
913 return id_to_item_controller_pair.first;
914 }
905 } 915 }
906 return 0; 916 return 0;
907 } 917 }
908 918
909 bool ChromeLauncherControllerImpl::HasShelfIDToAppIDMapping( 919 bool ChromeLauncherControllerImpl::HasShelfIDToAppIDMapping(
910 ash::ShelfID id) const { 920 ash::ShelfID id) const {
911 return id_to_item_controller_map_.find(id) != 921 return id_to_item_controller_map_.find(id) !=
912 id_to_item_controller_map_.end(); 922 id_to_item_controller_map_.end();
913 } 923 }
914 924
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 } 1064 }
1055 } 1065 }
1056 } 1066 }
1057 1067
1058 ash::ShelfID 1068 ash::ShelfID
1059 ChromeLauncherControllerImpl::CreateAppShortcutLauncherItemWithType( 1069 ChromeLauncherControllerImpl::CreateAppShortcutLauncherItemWithType(
1060 const std::string& app_id, 1070 const std::string& app_id,
1061 int index, 1071 int index,
1062 ash::ShelfItemType shelf_item_type) { 1072 ash::ShelfItemType shelf_item_type) {
1063 AppShortcutLauncherItemController* controller = 1073 AppShortcutLauncherItemController* controller =
1064 AppShortcutLauncherItemController::Create(app_id, this); 1074 AppShortcutLauncherItemController::Create(app_id, "", this);
1065 ash::ShelfID shelf_id = InsertAppLauncherItem( 1075 ash::ShelfID shelf_id = InsertAppLauncherItem(
1066 controller, app_id, ash::STATUS_CLOSED, index, shelf_item_type); 1076 controller, app_id, ash::STATUS_CLOSED, index, shelf_item_type);
1067 return shelf_id; 1077 return shelf_id;
1068 } 1078 }
1069 1079
1070 void ChromeLauncherControllerImpl::LauncherItemClosed(ash::ShelfID id) { 1080 void ChromeLauncherControllerImpl::LauncherItemClosed(ash::ShelfID id) {
1071 IDToItemControllerMap::iterator iter = id_to_item_controller_map_.find(id); 1081 IDToItemControllerMap::iterator iter = id_to_item_controller_map_.find(id);
1072 CHECK(iter != id_to_item_controller_map_.end()); 1082 CHECK(iter != id_to_item_controller_map_.end());
1073 CHECK(iter->second); 1083 CHECK(iter->second);
1074 const std::string& app_id = iter->second->app_id(); 1084 const std::string& app_id = iter->second->app_id();
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 if (index == -1) 1692 if (index == -1)
1683 continue; 1693 continue;
1684 ash::ShelfItem item = model_->items()[index]; 1694 ash::ShelfItem item = model_->items()[index];
1685 item.image = image; 1695 item.image = image;
1686 if (arc_deferred_launcher_) 1696 if (arc_deferred_launcher_)
1687 arc_deferred_launcher_->MaybeApplySpinningEffect(id, &item.image); 1697 arc_deferred_launcher_->MaybeApplySpinningEffect(id, &item.image);
1688 model_->Set(index, item); 1698 model_->Set(index, item);
1689 // It's possible we're waiting on more than one item, so don't break. 1699 // It's possible we're waiting on more than one item, so don't break.
1690 } 1700 }
1691 } 1701 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698