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

Unified Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc

Issue 2545923004: Remove LauncherItemController::type; use ShelfItems::type. (Closed)
Patch Set: Rebase; remove new LauncherItemController::TYPE_APP check. Created 4 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
Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
index 76b5f13e359db807d8f61ff14723a002205353e9..9de260a325590655f1b9467623c86c5a90cd2888 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
@@ -298,17 +298,33 @@ ash::ShelfID ChromeLauncherControllerImpl::CreateAppLauncherItem(
const std::string& app_id,
ash::ShelfItemStatus status) {
return InsertAppLauncherItem(controller, app_id, status, model_->item_count(),
- controller->GetShelfItemType());
+ ash::TYPE_APP);
+}
+
+const ash::ShelfItem& ChromeLauncherControllerImpl::GetItem(
+ ash::ShelfID id) const {
+ const int index = model_->ItemIndexByID(id);
+ DCHECK_GE(index, 0);
+ return model_->items()[index];
+}
+
+void ChromeLauncherControllerImpl::SetItemType(ash::ShelfID id,
+ ash::ShelfItemType type) {
+ const int index = model_->ItemIndexByID(id);
+ DCHECK_GE(index, 0);
+ ash::ShelfItem item = model_->items()[index];
+ if (item.type != type) {
+ item.type = type;
+ model_->Set(index, item);
+ }
}
void ChromeLauncherControllerImpl::SetItemStatus(ash::ShelfID id,
ash::ShelfItemStatus status) {
- int index = model_->ItemIndexByID(id);
- ash::ShelfItemStatus old_status = model_->items()[index].status;
- // Since ordinary browser windows are not registered, we might get a negative
- // index here.
- if (index >= 0 && old_status != status) {
- ash::ShelfItem item = model_->items()[index];
+ const int index = model_->ItemIndexByID(id);
+ DCHECK_GE(index, 0);
+ ash::ShelfItem item = model_->items()[index];
+ if (item.status != status) {
item.status = status;
model_->Set(index, item);
}
@@ -378,12 +394,10 @@ void ChromeLauncherControllerImpl::UnpinAndUpdatePrefs(ash::ShelfID id,
GetLaunchIDForShelfID(id)));
}
- if (controller->type() == LauncherItemController::TYPE_APP ||
- controller->locked()) {
+ if (GetItem(id).status != ash::STATUS_CLOSED || controller->locked())
UnpinRunningAppInternal(model_->ItemIndexByID(id));
- } else {
+ else
LauncherItemClosed(id);
- }
}
bool ChromeLauncherControllerImpl::IsPinned(ash::ShelfID id) {
@@ -686,27 +700,25 @@ std::vector<content::WebContents*>
ChromeLauncherControllerImpl::GetV1ApplicationsFromAppId(
const std::string& app_id) {
ash::ShelfID id = GetShelfIDForAppID(app_id);
-
- // If there is no such an item pinned to the launcher, no menu gets created.
- if (id) {
+ // If there is no such item pinned to the launcher, no menu gets created.
+ if (id != ash::kInvalidShelfID &&
+ GetItem(id).type == ash::TYPE_APP_SHORTCUT) {
LauncherItemController* controller = GetLauncherItemController(id);
- DCHECK(controller);
- if (controller->type() == LauncherItemController::TYPE_SHORTCUT)
- return GetV1ApplicationsFromController(controller);
+ AppShortcutLauncherItemController* app_controller =
+ static_cast<AppShortcutLauncherItemController*>(controller);
+ return app_controller->GetRunningApplications();
}
return std::vector<content::WebContents*>();
}
void ChromeLauncherControllerImpl::ActivateShellApp(const std::string& app_id,
- int index) {
+ int window_index) {
ash::ShelfID id = GetShelfIDForAppID(app_id);
- if (id) {
+ if (id != ash::kInvalidShelfID && GetItem(id).type == ash::TYPE_APP) {
LauncherItemController* controller = GetLauncherItemController(id);
- if (controller && controller->type() == LauncherItemController::TYPE_APP) {
- AppWindowLauncherItemController* app_window_controller =
- static_cast<AppWindowLauncherItemController*>(controller);
- app_window_controller->ActivateIndexedApp(index);
- }
+ AppWindowLauncherItemController* app_window_controller =
+ static_cast<AppWindowLauncherItemController*>(controller);
+ app_window_controller->ActivateIndexedApp(window_index);
}
}
@@ -1262,8 +1274,7 @@ void ChromeLauncherControllerImpl::UpdateAppLaunchersFromPref() {
DCHECK(controller);
DCHECK_NE(controller->app_id(), extension_misc::kChromeAppId);
- if (controller->locked() ||
- controller->type() == LauncherItemController::TYPE_APP) {
+ if (item.status != ash::STATUS_CLOSED || controller->locked()) {
UnpinRunningAppInternal(index);
// Note, item can be moved to the right due weighting in shelf model.
DCHECK_GE(model_->ItemIndexByID(item.id), index);
@@ -1326,7 +1337,7 @@ ash::ShelfID ChromeLauncherControllerImpl::InsertAppLauncherItem(
CHECK(!HasShelfIDToAppIDMapping(id));
CHECK(controller);
// Ash's ShelfWindowWatcher handles app panel windows separately.
- DCHECK_NE(ash::TYPE_APP_PANEL, controller->GetShelfItemType());
+ DCHECK_NE(ash::TYPE_APP_PANEL, shelf_item_type);
id_to_item_controller_map_[id] = controller;
controller->set_shelf_id(id);
@@ -1352,15 +1363,6 @@ ash::ShelfID ChromeLauncherControllerImpl::InsertAppLauncherItem(
return id;
}
-std::vector<content::WebContents*>
-ChromeLauncherControllerImpl::GetV1ApplicationsFromController(
- LauncherItemController* controller) {
- DCHECK(controller->type() == LauncherItemController::TYPE_SHORTCUT);
- AppShortcutLauncherItemController* app_controller =
- static_cast<AppShortcutLauncherItemController*>(controller);
- return app_controller->GetRunningApplications();
-}
-
void ChromeLauncherControllerImpl::CreateBrowserShortcutLauncherItem() {
ash::ShelfItem browser_shortcut;
browser_shortcut.type = ash::TYPE_BROWSER_SHORTCUT;

Powered by Google App Engine
This is Rietveld 408576698