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

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

Issue 2391253004: Use mojo Shelf interfaces for both mash and classic ash. (Closed)
Patch Set: Sync and rebase. Created 4 years, 2 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/chrome_launcher_controller_mus.h" 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.h"
6 6
7 #include "chrome/browser/profiles/profile_manager.h" 7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/ash/launcher/chrome_mash_shelf_controller.h" 8 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
9 #include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h"
10 #include "extensions/grit/extensions_browser_resources.h"
11 #include "mojo/common/common_type_converters.h"
12 #include "ui/base/resource/resource_bundle.h"
13
14 class ChromeShelfItemDelegate : public ash::mojom::ShelfItemDelegate {
15 public:
16 explicit ChromeShelfItemDelegate(const std::string& app_id,
17 ChromeLauncherController* controller)
18 : app_id_(app_id),
19 item_delegate_binding_(this),
20 controller_(controller) {}
21 ~ChromeShelfItemDelegate() override {}
22
23 ash::mojom::ShelfItemDelegateAssociatedPtrInfo CreateInterfacePtrInfoAndBind(
24 mojo::AssociatedGroup* associated_group) {
25 DCHECK(!item_delegate_binding_.is_bound());
26 ash::mojom::ShelfItemDelegateAssociatedPtrInfo ptr_info;
27 item_delegate_binding_.Bind(&ptr_info, associated_group);
28 return ptr_info;
29 }
30
31 private:
32 // ash::mojom::ShelfItemDelegate:
33 void LaunchItem() override {
34 controller_->LaunchApp(app_id_, ash::LAUNCH_FROM_UNKNOWN, ui::EF_NONE);
35 }
36 void ExecuteCommand(uint32_t command_id, int32_t event_flags) override {
37 NOTIMPLEMENTED();
38 }
39 void ItemPinned() override { NOTIMPLEMENTED(); }
40 void ItemUnpinned() override { NOTIMPLEMENTED(); }
41 void ItemReordered(uint32_t order) override { NOTIMPLEMENTED(); }
42
43 std::string app_id_;
44 mojo::AssociatedBinding<ash::mojom::ShelfItemDelegate> item_delegate_binding_;
45
46 // Not owned.
47 ChromeLauncherController* controller_;
48
49 DISALLOW_COPY_AND_ASSIGN(ChromeShelfItemDelegate);
50 };
9 51
10 // static 52 // static
11 ChromeLauncherController* ChromeLauncherControllerMus::CreateInstance() { 53 ChromeLauncherController* ChromeLauncherControllerMus::CreateInstance() {
12 DCHECK(!ChromeLauncherController::instance()); 54 DCHECK(!ChromeLauncherController::instance());
13 ChromeLauncherControllerMus* instance = new ChromeLauncherControllerMus(); 55 ChromeLauncherControllerMus* instance = new ChromeLauncherControllerMus();
14 ChromeLauncherController::set_instance(instance); 56 ChromeLauncherController::set_instance(instance);
15 return instance; 57 return instance;
16 } 58 }
17 59
18 ChromeLauncherControllerMus::ChromeLauncherControllerMus()
19 : shelf_controller_(new ChromeMashShelfController) {}
20
21 ChromeLauncherControllerMus::~ChromeLauncherControllerMus() {} 60 ChromeLauncherControllerMus::~ChromeLauncherControllerMus() {}
22 61
23 void ChromeLauncherControllerMus::Init() {} 62 void ChromeLauncherControllerMus::Init() {}
24 63
25 ash::ShelfID ChromeLauncherControllerMus::CreateAppLauncherItem( 64 ash::ShelfID ChromeLauncherControllerMus::CreateAppLauncherItem(
26 LauncherItemController* controller, 65 LauncherItemController* controller,
27 const std::string& app_id, 66 const std::string& app_id,
28 ash::ShelfItemStatus status) { 67 ash::ShelfItemStatus status) {
29 NOTIMPLEMENTED(); 68 NOTIMPLEMENTED();
30 return ash::TYPE_UNDEFINED; 69 return ash::TYPE_UNDEFINED;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 bool ChromeLauncherControllerMus::IsOpen(ash::ShelfID id) { 125 bool ChromeLauncherControllerMus::IsOpen(ash::ShelfID id) {
87 NOTIMPLEMENTED(); 126 NOTIMPLEMENTED();
88 return false; 127 return false;
89 } 128 }
90 129
91 bool ChromeLauncherControllerMus::IsPlatformApp(ash::ShelfID id) { 130 bool ChromeLauncherControllerMus::IsPlatformApp(ash::ShelfID id) {
92 NOTIMPLEMENTED(); 131 NOTIMPLEMENTED();
93 return false; 132 return false;
94 } 133 }
95 134
96 void ChromeLauncherControllerMus::LaunchApp(const std::string& app_id,
97 ash::LaunchSource source,
98 int event_flags) {
99 shelf_controller_->LaunchItem(app_id);
100 }
101
102 void ChromeLauncherControllerMus::ActivateApp(const std::string& app_id, 135 void ChromeLauncherControllerMus::ActivateApp(const std::string& app_id,
103 ash::LaunchSource source, 136 ash::LaunchSource source,
104 int event_flags) { 137 int event_flags) {
105 NOTIMPLEMENTED(); 138 NOTIMPLEMENTED();
106 } 139 }
107 140
108 extensions::LaunchType ChromeLauncherControllerMus::GetLaunchType( 141 extensions::LaunchType ChromeLauncherControllerMus::GetLaunchType(
109 ash::ShelfID id) { 142 ash::ShelfID id) {
110 NOTIMPLEMENTED(); 143 NOTIMPLEMENTED();
111 return extensions::LAUNCH_TYPE_INVALID; 144 return extensions::LAUNCH_TYPE_INVALID;
(...skipping 10 matching lines...) Expand all
122 NOTIMPLEMENTED(); 155 NOTIMPLEMENTED();
123 return false; 156 return false;
124 } 157 }
125 158
126 void ChromeLauncherControllerMus::SetLaunchType( 159 void ChromeLauncherControllerMus::SetLaunchType(
127 ash::ShelfID id, 160 ash::ShelfID id,
128 extensions::LaunchType launch_type) { 161 extensions::LaunchType launch_type) {
129 NOTIMPLEMENTED(); 162 NOTIMPLEMENTED();
130 } 163 }
131 164
132 Profile* ChromeLauncherControllerMus::GetProfile() {
133 return ProfileManager::GetActiveUserProfile();
134 }
135
136 void ChromeLauncherControllerMus::UpdateAppState(content::WebContents* contents, 165 void ChromeLauncherControllerMus::UpdateAppState(content::WebContents* contents,
137 AppState app_state) { 166 AppState app_state) {
138 NOTIMPLEMENTED(); 167 NOTIMPLEMENTED();
139 } 168 }
140 169
141 ash::ShelfID ChromeLauncherControllerMus::GetShelfIDForWebContents( 170 ash::ShelfID ChromeLauncherControllerMus::GetShelfIDForWebContents(
142 content::WebContents* contents) { 171 content::WebContents* contents) {
143 NOTIMPLEMENTED(); 172 NOTIMPLEMENTED();
144 return ash::TYPE_UNDEFINED; 173 return ash::TYPE_UNDEFINED;
145 } 174 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 261
233 void ChromeLauncherControllerMus::OnUserProfileReadyToSwitch(Profile* profile) { 262 void ChromeLauncherControllerMus::OnUserProfileReadyToSwitch(Profile* profile) {
234 NOTIMPLEMENTED(); 263 NOTIMPLEMENTED();
235 } 264 }
236 265
237 ArcAppDeferredLauncherController* 266 ArcAppDeferredLauncherController*
238 ChromeLauncherControllerMus::GetArcDeferredLauncher() { 267 ChromeLauncherControllerMus::GetArcDeferredLauncher() {
239 NOTIMPLEMENTED(); 268 NOTIMPLEMENTED();
240 return nullptr; 269 return nullptr;
241 } 270 }
271
272 void ChromeLauncherControllerMus::OnAppImageUpdated(
273 const std::string& app_id,
274 const gfx::ImageSkia& image) {
275 if (ConnectToShelfController())
276 shelf_controller()->SetItemImage(app_id, *image.bitmap());
277 }
278
279 ChromeLauncherControllerMus::ChromeLauncherControllerMus() {}
280
281 void ChromeLauncherControllerMus::PinAppsFromPrefs() {
282 if (!ConnectToShelfController())
283 return;
284
285 std::vector<std::string> pinned_apps = ash::launcher::GetPinnedAppsFromPrefs(
286 profile()->GetPrefs(), launcher_controller_helper());
287
288 for (const auto& app : pinned_apps) {
289 if (app == ash::launcher::kPinnedAppsPlaceholder)
290 continue;
291
292 ash::mojom::ShelfItemPtr item(ash::mojom::ShelfItem::New());
293 item->app_id = app;
294 item->app_title = mojo::String::From(
295 launcher_controller_helper()->GetAppTitle(profile(), app));
296 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
297 const gfx::Image& image = rb.GetImageNamed(IDR_APP_DEFAULT_ICON);
298 item->image = *image.ToSkBitmap();
299 std::unique_ptr<ChromeShelfItemDelegate> delegate(
300 new ChromeShelfItemDelegate(app, this));
301 shelf_controller()->PinItem(std::move(item),
302 delegate->CreateInterfacePtrInfoAndBind(
303 shelf_controller().associated_group()));
304 app_id_to_item_delegate_.insert(std::make_pair(app, std::move(delegate)));
305
306 AppIconLoader* app_icon_loader = GetAppIconLoaderForApp(app);
307 if (app_icon_loader) {
308 app_icon_loader->FetchImage(app);
309 app_icon_loader->UpdateImage(app);
310 }
311 }
312 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698