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

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

Issue 2835063003: mash: Use ChromeLauncherControllerImpl, remove Mus subclass stub. (Closed)
Patch Set: Use CLCImpl for LauncherControllers, etc.; expose ShelfModel pointer. Created 3 years, 7 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/extension_app_window_launcher_controlle r.h" 5 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_controlle r.h"
6 6
7 #include "ash/shelf/shelf_model.h" 7 #include "ash/shelf/shelf_model.h"
8 #include "ash/shell.h"
9 #include "ash/wm/window_properties.h" 8 #include "ash/wm/window_properties.h"
10 #include "ash/wm/window_util.h" 9 #include "ash/wm/window_util.h"
11 #include "ash/wm_window.h" 10 #include "ash/wm_window.h"
12 #include "base/stl_util.h" 11 #include "base/stl_util.h"
13 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
14 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" 14 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
16 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_cont roller.h" 15 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_cont roller.h"
17 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" 16 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
18 #include "extensions/browser/app_window/app_window.h" 17 #include "extensions/browser/app_window/app_window.h"
19 #include "extensions/browser/app_window/native_app_window.h" 18 #include "extensions/browser/app_window/native_app_window.h"
20 #include "extensions/common/extension.h" 19 #include "extensions/common/extension.h"
21 #include "ui/aura/window.h" 20 #include "ui/aura/window.h"
22 #include "ui/aura/window_event_dispatcher.h" 21 #include "ui/aura/window_event_dispatcher.h"
23 22
24 using extensions::AppWindow; 23 using extensions::AppWindow;
25 using extensions::AppWindowRegistry; 24 using extensions::AppWindowRegistry;
(...skipping 18 matching lines...) Expand all
44 std::string GetAppShelfId(AppWindow* app_window) { 43 std::string GetAppShelfId(AppWindow* app_window) {
45 // Set app_shelf_id value to app_id and then append launch_id. 44 // Set app_shelf_id value to app_id and then append launch_id.
46 std::string app_id = app_window->extension_id(); 45 std::string app_id = app_window->extension_id();
47 std::string launch_id = GetLaunchId(app_window); 46 std::string launch_id = GetLaunchId(app_window);
48 return app_id + launch_id; 47 return app_id + launch_id;
49 } 48 }
50 49
51 } // namespace 50 } // namespace
52 51
53 ExtensionAppWindowLauncherController::ExtensionAppWindowLauncherController( 52 ExtensionAppWindowLauncherController::ExtensionAppWindowLauncherController(
54 ChromeLauncherController* owner) 53 ChromeLauncherControllerImpl* owner)
55 : AppWindowLauncherController(owner) { 54 : AppWindowLauncherController(owner) {
56 AppWindowRegistry* registry = AppWindowRegistry::Get(owner->profile()); 55 AppWindowRegistry* registry = AppWindowRegistry::Get(owner->profile());
57 registry_.insert(registry); 56 registry_.insert(registry);
58 registry->AddObserver(this); 57 registry->AddObserver(this);
59 } 58 }
60 59
61 ExtensionAppWindowLauncherController::~ExtensionAppWindowLauncherController() { 60 ExtensionAppWindowLauncherController::~ExtensionAppWindowLauncherController() {
62 for (std::set<AppWindowRegistry*>::iterator it = registry_.begin(); 61 for (std::set<AppWindowRegistry*>::iterator it = registry_.begin();
63 it != registry_.end(); ++it) 62 it != registry_.end(); ++it)
64 (*it)->RemoveObserver(this); 63 (*it)->RemoveObserver(this);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 std::string launch_id = GetLaunchId(app_window); 160 std::string launch_id = GetLaunchId(app_window);
162 std::unique_ptr<ExtensionAppWindowLauncherItemController> controller = 161 std::unique_ptr<ExtensionAppWindowLauncherItemController> controller =
163 base::MakeUnique<ExtensionAppWindowLauncherItemController>( 162 base::MakeUnique<ExtensionAppWindowLauncherItemController>(
164 ash::AppLaunchId(app_id, launch_id)); 163 ash::AppLaunchId(app_id, launch_id));
165 ExtensionAppWindowLauncherItemController* item_controller = 164 ExtensionAppWindowLauncherItemController* item_controller =
166 controller.get(); 165 controller.get();
167 166
168 controller->AddAppWindow(app_window); 167 controller->AddAppWindow(app_window);
169 // If there is already a shelf id mapped to this AppLaunchId (e.g. pinned), 168 // If there is already a shelf id mapped to this AppLaunchId (e.g. pinned),
170 // use that shelf item. 169 // use that shelf item.
171 shelf_id = ash::Shell::Get()->shelf_model()->GetShelfIDForAppIDAndLaunchID( 170 shelf_id = owner()->GetShelfIDForAppIDAndLaunchID(app_id, launch_id);
172 app_id, launch_id);
173 171
174 if (shelf_id == 0) { 172 if (shelf_id == 0) {
175 shelf_id = owner()->CreateAppLauncherItem(std::move(controller), status); 173 shelf_id = owner()->CreateAppLauncherItem(std::move(controller), status);
176 // Restore any existing app icon and flag as set. 174 // Restore any existing app icon and flag as set.
177 if (app_window->HasCustomIcon() && !app_window->app_icon().IsEmpty()) { 175 if (app_window->HasCustomIcon() && !app_window->app_icon().IsEmpty()) {
178 owner()->SetLauncherItemImage(shelf_id, 176 owner()->SetLauncherItemImage(shelf_id,
179 app_window->app_icon().AsImageSkia()); 177 app_window->app_icon().AsImageSkia());
180 item_controller->set_image_set_by_controller(true); 178 item_controller->set_image_set_by_controller(true);
181 } 179 }
182 } else { 180 } else {
183 ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model(); 181 owner()->shelf_model()->SetShelfItemDelegate(shelf_id,
184 shelf_model->SetShelfItemDelegate(shelf_id, std::move(controller)); 182 std::move(controller));
185 } 183 }
186 184
187 // We need to change the controller associated with app_shelf_id. 185 // We need to change the controller associated with app_shelf_id.
188 app_controller_map_[app_shelf_id] = item_controller; 186 app_controller_map_[app_shelf_id] = item_controller;
189 } 187 }
190 owner()->SetItemStatus(shelf_id, status); 188 owner()->SetItemStatus(shelf_id, status);
191 ash::WmWindow::Get(window)->aura_window()->SetProperty(ash::kShelfIDKey, 189 ash::WmWindow::Get(window)->aura_window()->SetProperty(ash::kShelfIDKey,
192 shelf_id); 190 shelf_id);
193 } 191 }
194 192
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 WindowToAppShelfIdMap::iterator window_iter = 228 WindowToAppShelfIdMap::iterator window_iter =
231 window_to_app_shelf_id_map_.find(window); 229 window_to_app_shelf_id_map_.find(window);
232 if (window_iter == window_to_app_shelf_id_map_.end()) 230 if (window_iter == window_to_app_shelf_id_map_.end())
233 return nullptr; 231 return nullptr;
234 AppControllerMap::iterator app_controller_iter = 232 AppControllerMap::iterator app_controller_iter =
235 app_controller_map_.find(window_iter->second); 233 app_controller_map_.find(window_iter->second);
236 if (app_controller_iter == app_controller_map_.end()) 234 if (app_controller_iter == app_controller_map_.end())
237 return nullptr; 235 return nullptr;
238 return app_controller_iter->second; 236 return app_controller_iter->second;
239 } 237 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698