OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |