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

Side by Side Diff: chrome/browser/ui/app_list/arc/arc_app_item.cc

Issue 1483593002: arc: Hide app list view on ARC app launch. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@b2_app_list
Patch Set: Update Created 5 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/app_list/arc/arc_app_item.h" 5 #include "chrome/browser/ui/app_list/arc/arc_app_item.h"
6 6
7 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
8 #include "chrome/browser/ui/app_list/app_list_service.h"
7 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" 9 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
10 #include "chrome/browser/ui/host_desktop.h"
8 #include "components/arc/arc_bridge_service.h" 11 #include "components/arc/arc_bridge_service.h"
9 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
10 #include "extensions/browser/app_sorting.h" 13 #include "extensions/browser/app_sorting.h"
11 #include "extensions/browser/extension_prefs.h" 14 #include "extensions/browser/extension_prefs.h"
12 #include "ui/app_list/app_list_constants.h" 15 #include "ui/app_list/app_list_constants.h"
13 #include "ui/gfx/color_utils.h" 16 #include "ui/gfx/color_utils.h"
14 #include "ui/gfx/image/image_skia_operations.h" 17 #include "ui/gfx/image/image_skia_operations.h"
15 18
16 namespace { 19 namespace {
17 20
21 bool g_disable_controller_delegate = false;
22
18 gfx::ImageSkia CreateDisabledIcon(const gfx::ImageSkia& icon) { 23 gfx::ImageSkia CreateDisabledIcon(const gfx::ImageSkia& icon) {
19 const color_utils::HSL shift = {-1, 0, 0.6}; 24 const color_utils::HSL shift = {-1, 0, 0.6};
20 return gfx::ImageSkiaOperations::CreateHSLShiftedImage(icon, shift); 25 return gfx::ImageSkiaOperations::CreateHSLShiftedImage(icon, shift);
21 } 26 }
22 27
23 extensions::AppSorting* GetAppSorting(content::BrowserContext* context) { 28 extensions::AppSorting* GetAppSorting(content::BrowserContext* context) {
24 return extensions::ExtensionPrefs::Get(context)->app_sorting(); 29 return extensions::ExtensionPrefs::Get(context)->app_sorting();
25 } 30 }
26 31
27 } // namespace 32 } // namespace
28 33
29 // static 34 // static
30 const char ArcAppItem::kItemType[] = "ArcAppItem"; 35 const char ArcAppItem::kItemType[] = "ArcAppItem";
31 36
37 // static
38 void ArcAppItem::DisableContollerDelegateForTesting() {
xiyuan 2015/12/09 17:20:29 I prefer to have something like void OverrideAppL
khmel1 2015/12/10 05:19:04 That is nice. Thanks for sharing best practices. I
39 g_disable_controller_delegate = true;
40 }
41
32 ArcAppItem::ArcAppItem( 42 ArcAppItem::ArcAppItem(
33 content::BrowserContext* context, 43 content::BrowserContext* context,
34 const app_list::AppListSyncableService::SyncItem* sync_item, 44 const app_list::AppListSyncableService::SyncItem* sync_item,
35 const std::string& id, 45 const std::string& id,
36 const std::string& name, 46 const std::string& name,
37 bool ready) 47 bool ready)
38 : app_list::AppListItem(id), 48 : app_list::AppListItem(id),
39 context_(context), 49 context_(context),
40 ready_(ready) { 50 ready_(ready) {
41 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 51 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 97
88 arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get(); 98 arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get();
89 if (!bridge_service || 99 if (!bridge_service ||
90 bridge_service->state() != arc::ArcBridgeService::State::READY) { 100 bridge_service->state() != arc::ArcBridgeService::State::READY) {
91 VLOG(2) << "Cannot launch app: " << app_info->package 101 VLOG(2) << "Cannot launch app: " << app_info->package
92 << ". Bridge service is not ready."; 102 << ". Bridge service is not ready.";
93 return; 103 return;
94 } 104 }
95 105
96 bridge_service->LaunchApp(app_info->package, app_info->activity); 106 bridge_service->LaunchApp(app_info->package, app_info->activity);
107
108 if (!g_disable_controller_delegate)
109 GetController()->DismissView();
97 } 110 }
98 111
99 void ArcAppItem::SetReady(bool ready) { 112 void ArcAppItem::SetReady(bool ready) {
100 if (ready_ == ready) 113 if (ready_ == ready)
101 return; 114 return;
102 115
103 ready_ = ready; 116 ready_ = ready;
104 UpdateIcon(); 117 UpdateIcon();
105 } 118 }
106 119
107 void ArcAppItem::SetName(const std::string& name) { 120 void ArcAppItem::SetName(const std::string& name) {
108 SetNameAndShortName(name, name); 121 SetNameAndShortName(name, name);
109 } 122 }
110 123
111 void ArcAppItem::UpdateIcon() { 124 void ArcAppItem::UpdateIcon() {
112 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 125 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
113 126
114 gfx::ImageSkia icon = arc_app_icon_->image_skia(); 127 gfx::ImageSkia icon = arc_app_icon_->image_skia();
115 if (!ready_) 128 if (!ready_)
116 icon = CreateDisabledIcon(icon); 129 icon = CreateDisabledIcon(icon);
117 130
118 SetIcon(icon); 131 SetIcon(icon);
119 } 132 }
120 133
121 void ArcAppItem::OnIconUpdated() { 134 void ArcAppItem::OnIconUpdated() {
122 UpdateIcon(); 135 UpdateIcon();
123 } 136 }
137
138 AppListControllerDelegate* ArcAppItem::GetController() {
139 return AppListService::Get(chrome::GetActiveDesktop())->
khmel1 2015/12/09 13:42:08 I did similar to ExtensionsAppItem. However I don'
xiyuan 2015/12/09 17:20:29 We cannot put the AppListService etc into ui/ beca
khmel1 2015/12/10 05:19:04 Thanks for confirming that adding base class is ac
140 GetControllerDelegate();
141 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698