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

Unified Diff: chrome/browser/ui/app_list/extension_app_item.cc

Issue 1507873006: Implement base class for app_list items. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits addressed 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/app_list/extension_app_item.h ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/app_list/extension_app_item.cc
diff --git a/chrome/browser/ui/app_list/extension_app_item.cc b/chrome/browser/ui/app_list/extension_app_item.cc
index 6bd1bb408ae1d0add9e8d6a8e53030467c558c1f..8c06f60e90825345fcf984fcfbe13674a5072a52 100644
--- a/chrome/browser/ui/app_list/extension_app_item.cc
+++ b/chrome/browser/ui/app_list/extension_app_item.cc
@@ -10,16 +10,13 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/app_context_menu.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
-#include "chrome/browser/ui/app_list/app_list_service.h"
#include "chrome/browser/ui/extensions/extension_enable_flow.h"
-#include "chrome/browser/ui/host_desktop.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_metrics.h"
#include "content/public/browser/user_metrics.h"
#include "extensions/browser/app_sorting.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
-#include "extensions/browser/extension_system.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
@@ -28,10 +25,8 @@
#include "sync/api/string_ordinal.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/canvas.h"
-#include "ui/gfx/color_utils.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/image/canvas_image_source.h"
-#include "ui/gfx/image/image_skia_operations.h"
using extensions::Extension;
@@ -101,15 +96,6 @@ class RoundedCornersImageSource : public gfx::CanvasImageSource {
DISALLOW_COPY_AND_ASSIGN(RoundedCornersImageSource);
};
-extensions::AppSorting* GetAppSorting(Profile* profile) {
- return extensions::ExtensionSystem::Get(profile)->app_sorting();
-}
-
-gfx::ImageSkia CreateDisabledIcon(const gfx::ImageSkia& icon) {
- const color_utils::HSL shift = {-1, 0, 0.6};
- return gfx::ImageSkiaOperations::CreateHSLShiftedImage(icon, shift);
-}
-
} // namespace
ExtensionAppItem::ExtensionAppItem(
@@ -119,9 +105,7 @@ ExtensionAppItem::ExtensionAppItem(
const std::string& extension_name,
const gfx::ImageSkia& installing_icon,
bool is_platform_app)
- : app_list::AppListItem(extension_id),
- profile_(profile),
- extension_id_(extension_id),
+ : ChromeAppListItem(profile, extension_id),
extension_enable_flow_controller_(NULL),
extension_name_(extension_name),
installing_icon_(CreateDisabledIcon(installing_icon)),
@@ -129,16 +113,12 @@ ExtensionAppItem::ExtensionAppItem(
has_overlay_(false) {
Reload();
if (sync_item && sync_item->item_ordinal.IsValid()) {
- // An existing synced position exists, use that.
- set_position(sync_item->item_ordinal);
- // Only set the name from the sync item if it is empty.
- if (name().empty())
- SetName(sync_item->item_name);
- return;
+ UpdateFromSync(sync_item);
+ } else {
+ GetAppSorting()->EnsureValidOrdinals(extension_id,
+ syncer::StringOrdinal());
+ UpdatePositionFromOrdering();
}
- GetAppSorting(profile_)->EnsureValidOrdinals(extension_id_,
- syncer::StringOrdinal());
- UpdatePositionFromExtensionOrdering();
}
ExtensionAppItem::~ExtensionAppItem() {
@@ -150,15 +130,14 @@ bool ExtensionAppItem::NeedsOverlay() const {
return false;
#endif
- extensions::LaunchType launch_type =
- GetExtension()
- ? extensions::GetLaunchType(extensions::ExtensionPrefs::Get(profile_),
- GetExtension())
- : extensions::LAUNCH_TYPE_WINDOW;
+ extensions::LaunchType launch_type = GetExtension()
+ ? extensions::GetLaunchType(extensions::ExtensionPrefs::Get(profile()),
+ GetExtension())
+ : extensions::LAUNCH_TYPE_WINDOW;
// The overlay icon is disabled for hosted apps in windowed mode with
// bookmark apps enabled.
- return !is_platform_app_ && extension_id_ != extension_misc::kChromeAppId &&
+ return !is_platform_app_ && extension_id() != extension_misc::kChromeAppId &&
(!extensions::util::IsNewBookmarkAppsEnabled() ||
launch_type != extensions::LAUNCH_TYPE_WINDOW);
}
@@ -183,8 +162,8 @@ void ExtensionAppItem::UpdateIcon() {
// not launchable.
if (GetExtension() && icon_) {
icon = icon_->image_skia();
- const bool enabled = extensions::util::IsAppLaunchable(extension_id_,
- profile_);
+ const bool enabled = extensions::util::IsAppLaunchable(extension_id(),
+ profile());
if (!enabled)
icon = CreateDisabledIcon(icon);
@@ -204,8 +183,9 @@ void ExtensionAppItem::Move(const ExtensionAppItem* prev,
if (!prev && !next)
return; // No reordering necessary
- extensions::ExtensionPrefs* prefs = extensions::ExtensionPrefs::Get(profile_);
- extensions::AppSorting* sorting = GetAppSorting(profile_);
+ extensions::ExtensionPrefs* prefs =
+ extensions::ExtensionPrefs::Get(profile());
+ extensions::AppSorting* sorting = GetAppSorting();
syncer::StringOrdinal page;
std::string prev_id, next_id;
@@ -222,23 +202,23 @@ void ExtensionAppItem::Move(const ExtensionAppItem* prev,
if (page.Equals(sorting->GetPageOrdinal(next->extension_id())))
next_id = next->extension_id();
}
- prefs->SetAppDraggedByUser(extension_id_);
- sorting->SetPageOrdinal(extension_id_, page);
- sorting->OnExtensionMoved(extension_id_, prev_id, next_id);
- UpdatePositionFromExtensionOrdering();
+ prefs->SetAppDraggedByUser(extension_id());
+ sorting->SetPageOrdinal(extension_id(), page);
+ sorting->OnExtensionMoved(extension_id(), prev_id, next_id);
+ UpdatePositionFromOrdering();
}
const Extension* ExtensionAppItem::GetExtension() const {
const extensions::ExtensionRegistry* registry =
- extensions::ExtensionRegistry::Get(profile_);
+ extensions::ExtensionRegistry::Get(profile());
const Extension* extension = registry->GetInstalledExtension(
- extension_id_);
+ extension_id());
return extension;
}
void ExtensionAppItem::LoadImage(const Extension* extension) {
icon_.reset(new extensions::IconImage(
- profile_,
+ profile(),
extension,
extensions::IconsInfo::GetIcons(extension),
extension_misc::EXTENSION_ICON_MEDIUM,
@@ -248,7 +228,8 @@ void ExtensionAppItem::LoadImage(const Extension* extension) {
}
bool ExtensionAppItem::RunExtensionEnableFlow() {
- if (extensions::util::IsAppLaunchableWithoutEnabling(extension_id_, profile_))
+ if (extensions::util::IsAppLaunchableWithoutEnabling(extension_id(),
+ profile()))
return false;
if (!extension_enable_flow_) {
@@ -256,7 +237,7 @@ bool ExtensionAppItem::RunExtensionEnableFlow() {
extension_enable_flow_controller_->OnShowChildDialog();
extension_enable_flow_.reset(new ExtensionEnableFlow(
- profile_, extension_id_, this));
+ profile(), extension_id(), this));
extension_enable_flow_->StartForNativeWindow(
extension_enable_flow_controller_->GetAppListWindow());
}
@@ -270,13 +251,13 @@ void ExtensionAppItem::Launch(int event_flags) {
return;
// Don't auto-enable apps that cannot be launched.
- if (!extensions::util::IsAppLaunchable(extension_id_, profile_))
+ if (!extensions::util::IsAppLaunchable(extension_id(), profile()))
return;
if (RunExtensionEnableFlow())
return;
- GetController()->LaunchApp(profile_,
+ GetController()->LaunchApp(profile(),
extension,
AppListControllerDelegate::LAUNCH_FROM_APP_LIST,
event_flags);
@@ -310,7 +291,7 @@ void ExtensionAppItem::Activate(int event_flags) {
return;
// Don't auto-enable apps that cannot be launched.
- if (!extensions::util::IsAppLaunchable(extension_id_, profile_))
+ if (!extensions::util::IsAppLaunchable(extension_id(), profile()))
return;
if (RunExtensionEnableFlow())
@@ -318,7 +299,7 @@ void ExtensionAppItem::Activate(int event_flags) {
content::RecordAction(base::UserMetricsAction("AppList_ClickOnApp"));
extensions::RecordAppListMainLaunch(extension);
- GetController()->ActivateApp(profile_,
+ GetController()->ActivateApp(profile(),
extension,
AppListControllerDelegate::LAUNCH_FROM_APP_LIST,
event_flags);
@@ -326,7 +307,7 @@ void ExtensionAppItem::Activate(int event_flags) {
ui::MenuModel* ExtensionAppItem::GetContextMenuModel() {
context_menu_.reset(new app_list::AppContextMenu(
- this, profile_, extension_id_, GetController()));
+ this, profile(), extension_id(), GetController()));
context_menu_->set_is_platform_app(is_platform_app_);
if (IsInFolder())
context_menu_->set_is_in_folder(true);
@@ -349,16 +330,11 @@ void ExtensionAppItem::ExecuteLaunchCommand(int event_flags) {
Launch(event_flags);
}
-void ExtensionAppItem::UpdatePositionFromExtensionOrdering() {
+void ExtensionAppItem::UpdatePositionFromOrdering() {
const syncer::StringOrdinal& page =
- GetAppSorting(profile_)->GetPageOrdinal(extension_id_);
+ GetAppSorting()->GetPageOrdinal(extension_id());
const syncer::StringOrdinal& launch =
- GetAppSorting(profile_)->GetAppLaunchOrdinal(extension_id_);
+ GetAppSorting()->GetAppLaunchOrdinal(extension_id());
set_position(syncer::StringOrdinal(
page.ToInternalValue() + launch.ToInternalValue()));
}
-
-AppListControllerDelegate* ExtensionAppItem::GetController() {
- return AppListService::Get(chrome::GetActiveDesktop())->
- GetControllerDelegate();
-}
« no previous file with comments | « chrome/browser/ui/app_list/extension_app_item.h ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698