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

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

Issue 2718563008: mash: Use mojo for ShelfItemDelegate and [app] MenuItem. (Closed)
Patch Set: Address comments. Created 3 years, 9 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 "base/strings/string_util.h" 7 #include "base/strings/string_util.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/profiles/profile_manager.h" 10 #include "chrome/browser/profiles/profile_manager.h"
11 #include "chrome/browser/ui/ash/app_launcher_id.h" 11 #include "chrome/browser/ui/ash/app_launcher_id.h"
12 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" 12 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
13 #include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h" 13 #include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h"
14 #include "extensions/grit/extensions_browser_resources.h" 14 #include "extensions/grit/extensions_browser_resources.h"
15 #include "ui/base/resource/resource_bundle.h" 15 #include "ui/base/resource/resource_bundle.h"
16 #include "ui/events/event_constants.h" 16 #include "ui/events/event_constants.h"
17 17
18 class ChromeShelfItemDelegate : public ash::mojom::ShelfItemDelegate {
19 public:
20 explicit ChromeShelfItemDelegate(const std::string& app_id,
21 ChromeLauncherController* controller)
22 : app_id_(app_id),
23 item_delegate_binding_(this),
24 controller_(controller) {}
25 ~ChromeShelfItemDelegate() override {}
26
27 ash::mojom::ShelfItemDelegateAssociatedPtrInfo
28 CreateInterfacePtrInfoAndBind() {
29 DCHECK(!item_delegate_binding_.is_bound());
30 ash::mojom::ShelfItemDelegateAssociatedPtrInfo ptr_info;
31 item_delegate_binding_.Bind(&ptr_info);
32 return ptr_info;
33 }
34
35 private:
36 // ash::mojom::ShelfItemDelegate:
37 void LaunchItem() override {
38 controller_->LaunchApp(ash::AppLauncherId(app_id_),
39 ash::LAUNCH_FROM_UNKNOWN, ui::EF_NONE);
40 }
41 void ExecuteCommand(uint32_t command_id, int event_flags) override {
42 NOTIMPLEMENTED();
43 }
44 void ItemPinned() override { NOTIMPLEMENTED(); }
45 void ItemUnpinned() override { NOTIMPLEMENTED(); }
46 void ItemReordered(uint32_t order) override { NOTIMPLEMENTED(); }
47
48 std::string app_id_;
49 mojo::AssociatedBinding<ash::mojom::ShelfItemDelegate> item_delegate_binding_;
50
51 // Not owned.
52 ChromeLauncherController* controller_;
53
54 DISALLOW_COPY_AND_ASSIGN(ChromeShelfItemDelegate);
55 };
56
57 ChromeLauncherControllerMus::ChromeLauncherControllerMus() { 18 ChromeLauncherControllerMus::ChromeLauncherControllerMus() {
58 AttachProfile(ProfileManager::GetActiveUserProfile()); 19 AttachProfile(ProfileManager::GetActiveUserProfile());
59 } 20 }
60 21
61 ChromeLauncherControllerMus::~ChromeLauncherControllerMus() {} 22 ChromeLauncherControllerMus::~ChromeLauncherControllerMus() {}
62 23
63 ash::ShelfID ChromeLauncherControllerMus::CreateAppLauncherItem( 24 ash::ShelfID ChromeLauncherControllerMus::CreateAppLauncherItem(
64 LauncherItemController* controller, 25 LauncherItemController* controller,
65 const std::string& app_id, 26 const std::string& app_id,
66 ash::ShelfItemStatus status) { 27 ash::ShelfItemStatus status) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 void ChromeLauncherControllerMus::ActiveUserChanged( 136 void ChromeLauncherControllerMus::ActiveUserChanged(
176 const std::string& user_email) { 137 const std::string& user_email) {
177 NOTIMPLEMENTED(); 138 NOTIMPLEMENTED();
178 } 139 }
179 140
180 void ChromeLauncherControllerMus::AdditionalUserAddedToSession( 141 void ChromeLauncherControllerMus::AdditionalUserAddedToSession(
181 Profile* profile) { 142 Profile* profile) {
182 NOTIMPLEMENTED(); 143 NOTIMPLEMENTED();
183 } 144 }
184 145
185 ash::ShelfAppMenuItemList 146 std::vector<ash::mojom::MenuItemPtr>
186 ChromeLauncherControllerMus::GetAppMenuItemsForTesting( 147 ChromeLauncherControllerMus::GetAppMenuItemsForTesting(
187 const ash::ShelfItem& item) { 148 const ash::ShelfItem& item) {
188 NOTIMPLEMENTED(); 149 NOTIMPLEMENTED();
189 return ash::ShelfAppMenuItemList(); 150 return std::vector<ash::mojom::MenuItemPtr>();
190 } 151 }
191 152
192 std::vector<content::WebContents*> 153 std::vector<content::WebContents*>
193 ChromeLauncherControllerMus::GetV1ApplicationsFromAppId( 154 ChromeLauncherControllerMus::GetV1ApplicationsFromAppId(
194 const std::string& app_id) { 155 const std::string& app_id) {
195 NOTIMPLEMENTED(); 156 NOTIMPLEMENTED();
196 return std::vector<content::WebContents*>(); 157 return std::vector<content::WebContents*>();
197 } 158 }
198 159
199 void ChromeLauncherControllerMus::ActivateShellApp(const std::string& app_id, 160 void ChromeLauncherControllerMus::ActivateShellApp(const std::string& app_id,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 if (app_launcher_id.app_id() == ash::launcher::kPinnedAppsPlaceholder) 244 if (app_launcher_id.app_id() == ash::launcher::kPinnedAppsPlaceholder)
284 continue; 245 continue;
285 246
286 ash::mojom::ShelfItemPtr item(ash::mojom::ShelfItem::New()); 247 ash::mojom::ShelfItemPtr item(ash::mojom::ShelfItem::New());
287 item->app_id = app_id; 248 item->app_id = app_id;
288 item->app_title = base::UTF16ToUTF8( 249 item->app_title = base::UTF16ToUTF8(
289 launcher_controller_helper()->GetAppTitle(profile(), app_id)); 250 launcher_controller_helper()->GetAppTitle(profile(), app_id));
290 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 251 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
291 const gfx::Image& image = rb.GetImageNamed(IDR_APP_DEFAULT_ICON); 252 const gfx::Image& image = rb.GetImageNamed(IDR_APP_DEFAULT_ICON);
292 item->image = *image.ToSkBitmap(); 253 item->image = *image.ToSkBitmap();
293 std::unique_ptr<ChromeShelfItemDelegate> delegate( 254 // TOOD(msw): Actually pin the item and install its delegate; this code is
294 new ChromeShelfItemDelegate(app_id, this)); 255 // unused at the moment. See http://crbug.com/647879
295 shelf_controller()->PinItem(std::move(item),
296 delegate->CreateInterfacePtrInfoAndBind());
297 app_id_to_item_delegate_.insert(
298 std::make_pair(app_id, std::move(delegate)));
299
300 AppIconLoader* app_icon_loader = GetAppIconLoaderForApp(app_id); 256 AppIconLoader* app_icon_loader = GetAppIconLoaderForApp(app_id);
301 if (app_icon_loader) { 257 if (app_icon_loader) {
302 app_icon_loader->FetchImage(app_id); 258 app_icon_loader->FetchImage(app_id);
303 app_icon_loader->UpdateImage(app_id); 259 app_icon_loader->UpdateImage(app_id);
304 } 260 }
305 } 261 }
306 } 262 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698