Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc |
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc |
index 3137581a8ca5aba5c2b41e2a2de9ce09bbfdfe7d..94a636c49d9d2ad62e4d58f6f8aebbcbc7fb5b6d 100644 |
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc |
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc |
@@ -61,6 +61,7 @@ |
#include "chrome/common/pref_names.h" |
#include "chrome/common/url_constants.h" |
#include "content/public/browser/navigation_entry.h" |
+#include "content/public/browser/notification_registrar.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/web_contents.h" |
#include "extensions/common/extension_resource.h" |
@@ -83,6 +84,9 @@ using extensions::Extension; |
using extension_misc::kGmailAppId; |
using content::WebContents; |
+// static |
+ChromeLauncherController* ChromeLauncherController::instance_ = NULL; |
+ |
namespace { |
std::string GetPrefKeyForRootWindow(aura::RootWindow* root_window) { |
@@ -186,7 +190,7 @@ void MaybePropagatePrefToLocal(PrefServiceSyncable* pref_service, |
} // namespace |
-ChromeLauncherControllerPerApp::ChromeLauncherControllerPerApp( |
+ChromeLauncherController::ChromeLauncherController( |
Profile* profile, |
ash::LauncherModel* model) |
: model_(model), |
@@ -224,24 +228,24 @@ ChromeLauncherControllerPerApp::ChromeLauncherControllerPerApp( |
pref_change_registrar_.Init(profile_->GetPrefs()); |
pref_change_registrar_.Add( |
prefs::kPinnedLauncherApps, |
- base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref, |
+ base::Bind(&ChromeLauncherController::UpdateAppLaunchersFromPref, |
base::Unretained(this))); |
pref_change_registrar_.Add( |
prefs::kShelfAlignmentLocal, |
- base::Bind(&ChromeLauncherControllerPerApp::SetShelfAlignmentFromPrefs, |
+ base::Bind(&ChromeLauncherController::SetShelfAlignmentFromPrefs, |
base::Unretained(this))); |
pref_change_registrar_.Add( |
prefs::kShelfAutoHideBehaviorLocal, |
- base::Bind(&ChromeLauncherControllerPerApp:: |
+ base::Bind(&ChromeLauncherController:: |
SetShelfAutoHideBehaviorFromPrefs, |
base::Unretained(this))); |
pref_change_registrar_.Add( |
prefs::kShelfPreferences, |
- base::Bind(&ChromeLauncherControllerPerApp::SetShelfBehaviorsFromPrefs, |
+ base::Bind(&ChromeLauncherController::SetShelfBehaviorsFromPrefs, |
base::Unretained(this))); |
} |
-ChromeLauncherControllerPerApp::~ChromeLauncherControllerPerApp() { |
+ChromeLauncherController::~ChromeLauncherController() { |
// Reset the shell window controller here since it has a weak pointer to this. |
shell_window_controller_.reset(); |
@@ -275,9 +279,23 @@ ChromeLauncherControllerPerApp::~ChromeLauncherControllerPerApp() { |
app_sync_ui_state_->RemoveObserver(this); |
PrefServiceSyncable::FromProfile(profile_)->RemoveObserver(this); |
+ |
+ if (instance_ == this) |
+ instance_ = NULL; |
+} |
+ |
+// static |
+ChromeLauncherController* ChromeLauncherController::CreateInstance( |
+ Profile* profile, |
+ ash::LauncherModel* model) { |
+ // We do not check here for re-creation of the ChromeLauncherController since |
+ // it appears that it might be intentional that the ChromeLauncherController |
+ // can be re-created. |
+ instance_ = new ChromeLauncherController(profile, model); |
+ return instance_; |
} |
-void ChromeLauncherControllerPerApp::Init() { |
+void ChromeLauncherController::Init() { |
UpdateAppLaunchersFromPref(); |
CreateBrowserShortcutLauncherItem(); |
@@ -297,22 +315,7 @@ void ChromeLauncherControllerPerApp::Init() { |
} |
} |
-ChromeLauncherControllerPerApp* |
-ChromeLauncherControllerPerApp::GetPerAppInterface() { |
- return this; |
-} |
- |
-ash::LauncherID ChromeLauncherControllerPerApp::CreateTabbedLauncherItem( |
- LauncherItemController* controller, |
- IncognitoState is_incognito, |
- ash::LauncherItemStatus status) { |
- // The PerAppLauncher doesn't need an empty slot for TabbedLauncherItem and |
- // its LauncherItemController. |
- // TODO(skuhne): Remove function when PerBrowser launcher gets removed. |
- return 0; |
-} |
- |
-ash::LauncherID ChromeLauncherControllerPerApp::CreateAppLauncherItem( |
+ash::LauncherID ChromeLauncherController::CreateAppLauncherItem( |
LauncherItemController* controller, |
const std::string& app_id, |
ash::LauncherItemStatus status) { |
@@ -332,7 +335,7 @@ ash::LauncherID ChromeLauncherControllerPerApp::CreateAppLauncherItem( |
controller->GetLauncherItemType()); |
} |
-void ChromeLauncherControllerPerApp::SetItemStatus( |
+void ChromeLauncherController::SetItemStatus( |
ash::LauncherID id, |
ash::LauncherItemStatus status) { |
int index = model_->ItemIndexByID(id); |
@@ -349,7 +352,7 @@ void ChromeLauncherControllerPerApp::SetItemStatus( |
UpdateBrowserItemStatus(); |
} |
-void ChromeLauncherControllerPerApp::SetItemController( |
+void ChromeLauncherController::SetItemController( |
ash::LauncherID id, |
LauncherItemController* controller) { |
CHECK(controller); |
@@ -360,7 +363,7 @@ void ChromeLauncherControllerPerApp::SetItemController( |
controller->set_launcher_id(id); |
} |
-void ChromeLauncherControllerPerApp::CloseLauncherItem(ash::LauncherID id) { |
+void ChromeLauncherController::CloseLauncherItem(ash::LauncherID id) { |
CHECK(id); |
if (IsPinned(id)) { |
// Create a new shortcut controller. |
@@ -376,7 +379,7 @@ void ChromeLauncherControllerPerApp::CloseLauncherItem(ash::LauncherID id) { |
} |
} |
-void ChromeLauncherControllerPerApp::Pin(ash::LauncherID id) { |
+void ChromeLauncherController::Pin(ash::LauncherID id) { |
DCHECK(HasItemController(id)); |
int index = model_->ItemIndexByID(id); |
@@ -396,7 +399,7 @@ void ChromeLauncherControllerPerApp::Pin(ash::LauncherID id) { |
PersistPinnedState(); |
} |
-void ChromeLauncherControllerPerApp::Unpin(ash::LauncherID id) { |
+void ChromeLauncherController::Unpin(ash::LauncherID id) { |
DCHECK(HasItemController(id)); |
LauncherItemController* controller = id_to_item_controller_map_[id]; |
@@ -423,7 +426,7 @@ void ChromeLauncherControllerPerApp::Unpin(ash::LauncherID id) { |
PersistPinnedState(); |
} |
-bool ChromeLauncherControllerPerApp::IsPinned(ash::LauncherID id) { |
+bool ChromeLauncherController::IsPinned(ash::LauncherID id) { |
int index = model_->ItemIndexByID(id); |
if (index < 0) |
return false; |
@@ -431,7 +434,7 @@ bool ChromeLauncherControllerPerApp::IsPinned(ash::LauncherID id) { |
return (type == ash::TYPE_APP_SHORTCUT || type == ash::TYPE_BROWSER_SHORTCUT); |
} |
-void ChromeLauncherControllerPerApp::TogglePinned(ash::LauncherID id) { |
+void ChromeLauncherController::TogglePinned(ash::LauncherID id) { |
if (!HasItemController(id)) |
return; // May happen if item closed with menu open. |
@@ -441,7 +444,7 @@ void ChromeLauncherControllerPerApp::TogglePinned(ash::LauncherID id) { |
Pin(id); |
} |
-bool ChromeLauncherControllerPerApp::IsPinnable(ash::LauncherID id) const { |
+bool ChromeLauncherController::IsPinnable(ash::LauncherID id) const { |
int index = model_->ItemIndexByID(id); |
if (index == -1) |
return false; |
@@ -453,7 +456,7 @@ bool ChromeLauncherControllerPerApp::IsPinnable(ash::LauncherID id) const { |
CanPin()); |
} |
-void ChromeLauncherControllerPerApp::LockV1AppWithID( |
+void ChromeLauncherController::LockV1AppWithID( |
const std::string& app_id) { |
ash::LauncherID id = GetLauncherIDForAppID(app_id); |
if (!IsPinned(id) && !IsWindowedAppInLauncher(app_id)) { |
@@ -466,7 +469,7 @@ void ChromeLauncherControllerPerApp::LockV1AppWithID( |
id_to_item_controller_map_[id]->lock(); |
} |
-void ChromeLauncherControllerPerApp::UnlockV1AppWithID( |
+void ChromeLauncherController::UnlockV1AppWithID( |
const std::string& app_id) { |
ash::LauncherID id = GetLauncherIDForAppID(app_id); |
CHECK(IsPinned(id) || IsWindowedAppInLauncher(app_id)); |
@@ -477,26 +480,26 @@ void ChromeLauncherControllerPerApp::UnlockV1AppWithID( |
CloseLauncherItem(id); |
} |
-void ChromeLauncherControllerPerApp::Launch(ash::LauncherID id, |
+void ChromeLauncherController::Launch(ash::LauncherID id, |
int event_flags) { |
if (!HasItemController(id)) |
return; // In case invoked from menu and item closed while menu up. |
id_to_item_controller_map_[id]->Launch(event_flags); |
} |
-void ChromeLauncherControllerPerApp::Close(ash::LauncherID id) { |
+void ChromeLauncherController::Close(ash::LauncherID id) { |
if (!HasItemController(id)) |
return; // May happen if menu closed. |
id_to_item_controller_map_[id]->Close(); |
} |
-bool ChromeLauncherControllerPerApp::IsOpen(ash::LauncherID id) { |
+bool ChromeLauncherController::IsOpen(ash::LauncherID id) { |
if (!HasItemController(id)) |
return false; |
return id_to_item_controller_map_[id]->IsOpen(); |
} |
-bool ChromeLauncherControllerPerApp::IsPlatformApp(ash::LauncherID id) { |
+bool ChromeLauncherController::IsPlatformApp(ash::LauncherID id) { |
if (!HasItemController(id)) |
return false; |
@@ -507,7 +510,7 @@ bool ChromeLauncherControllerPerApp::IsPlatformApp(ash::LauncherID id) { |
return extension ? extension->is_platform_app() : false; |
} |
-void ChromeLauncherControllerPerApp::LaunchApp(const std::string& app_id, |
+void ChromeLauncherController::LaunchApp(const std::string& app_id, |
int event_flags) { |
// |extension| could be NULL when it is being unloaded for updating. |
const Extension* extension = GetExtensionForAppID(app_id); |
@@ -532,7 +535,7 @@ void ChromeLauncherControllerPerApp::LaunchApp(const std::string& app_id, |
event_flags)); |
} |
-void ChromeLauncherControllerPerApp::ActivateApp(const std::string& app_id, |
+void ChromeLauncherController::ActivateApp(const std::string& app_id, |
int event_flags) { |
// If there is an existing non-shortcut controller for this app, open it. |
ash::LauncherID id = GetLauncherIDForAppID(app_id); |
@@ -553,7 +556,7 @@ void ChromeLauncherControllerPerApp::ActivateApp(const std::string& app_id, |
} |
extensions::ExtensionPrefs::LaunchType |
- ChromeLauncherControllerPerApp::GetLaunchType(ash::LauncherID id) { |
+ ChromeLauncherController::GetLaunchType(ash::LauncherID id) { |
DCHECK(HasItemController(id)); |
const Extension* extension = GetExtensionForAppID( |
@@ -568,12 +571,11 @@ extensions::ExtensionPrefs::LaunchType |
extensions::ExtensionPrefs::LAUNCH_DEFAULT); |
} |
-std::string ChromeLauncherControllerPerApp::GetAppID( |
- content::WebContents* tab) { |
+std::string ChromeLauncherController::GetAppID(content::WebContents* tab) { |
return app_tab_helper_->GetAppID(tab); |
} |
-ash::LauncherID ChromeLauncherControllerPerApp::GetLauncherIDForAppID( |
+ash::LauncherID ChromeLauncherController::GetLauncherIDForAppID( |
const std::string& app_id) { |
for (IDToItemControllerMap::const_iterator i = |
id_to_item_controller_map_.begin(); |
@@ -586,15 +588,14 @@ ash::LauncherID ChromeLauncherControllerPerApp::GetLauncherIDForAppID( |
return 0; |
} |
-std::string ChromeLauncherControllerPerApp::GetAppIDForLauncherID( |
+std::string ChromeLauncherController::GetAppIDForLauncherID( |
ash::LauncherID id) { |
CHECK(HasItemController(id)); |
return id_to_item_controller_map_[id]->app_id(); |
} |
-void ChromeLauncherControllerPerApp::SetAppImage( |
- const std::string& id, |
- const gfx::ImageSkia& image) { |
+void ChromeLauncherController::SetAppImage(const std::string& id, |
+ const gfx::ImageSkia& image) { |
// TODO: need to get this working for shortcuts. |
for (IDToItemControllerMap::const_iterator i = |
@@ -615,13 +616,13 @@ void ChromeLauncherControllerPerApp::SetAppImage( |
} |
} |
-void ChromeLauncherControllerPerApp::OnAutoHideBehaviorChanged( |
+void ChromeLauncherController::OnAutoHideBehaviorChanged( |
aura::RootWindow* root_window, |
ash::ShelfAutoHideBehavior new_behavior) { |
SetShelfAutoHideBehaviorPrefs(new_behavior, root_window); |
} |
-void ChromeLauncherControllerPerApp::SetLauncherItemImage( |
+void ChromeLauncherController::SetLauncherItemImage( |
ash::LauncherID launcher_id, |
const gfx::ImageSkia& image) { |
int index = model_->ItemIndexByID(launcher_id); |
@@ -632,7 +633,7 @@ void ChromeLauncherControllerPerApp::SetLauncherItemImage( |
model_->Set(index, item); |
} |
-bool ChromeLauncherControllerPerApp::IsAppPinned(const std::string& app_id) { |
+bool ChromeLauncherController::IsAppPinned(const std::string& app_id) { |
for (IDToItemControllerMap::const_iterator i = |
id_to_item_controller_map_.begin(); |
i != id_to_item_controller_map_.end(); ++i) { |
@@ -642,7 +643,7 @@ bool ChromeLauncherControllerPerApp::IsAppPinned(const std::string& app_id) { |
return false; |
} |
-bool ChromeLauncherControllerPerApp::IsWindowedAppInLauncher( |
+bool ChromeLauncherController::IsWindowedAppInLauncher( |
const std::string& app_id) { |
int index = model_->ItemIndexByID(GetLauncherIDForAppID(app_id)); |
if (index < 0) |
@@ -652,14 +653,14 @@ bool ChromeLauncherControllerPerApp::IsWindowedAppInLauncher( |
return type == ash::TYPE_WINDOWED_APP; |
} |
-void ChromeLauncherControllerPerApp::PinAppWithID(const std::string& app_id) { |
+void ChromeLauncherController::PinAppWithID(const std::string& app_id) { |
if (CanPin()) |
DoPinAppWithID(app_id); |
else |
NOTREACHED(); |
} |
-void ChromeLauncherControllerPerApp::SetLaunchType( |
+void ChromeLauncherController::SetLaunchType( |
ash::LauncherID id, |
extensions::ExtensionPrefs::LaunchType launch_type) { |
if (!HasItemController(id)) |
@@ -669,35 +670,34 @@ void ChromeLauncherControllerPerApp::SetLaunchType( |
id_to_item_controller_map_[id]->app_id(), launch_type); |
} |
-void ChromeLauncherControllerPerApp::UnpinAppsWithID( |
- const std::string& app_id) { |
+void ChromeLauncherController::UnpinAppsWithID(const std::string& app_id) { |
if (CanPin()) |
DoUnpinAppsWithID(app_id); |
else |
NOTREACHED(); |
} |
-bool ChromeLauncherControllerPerApp::IsLoggedInAsGuest() { |
+bool ChromeLauncherController::IsLoggedInAsGuest() { |
return ProfileManager::GetDefaultProfileOrOffTheRecord()->IsOffTheRecord(); |
} |
-void ChromeLauncherControllerPerApp::CreateNewWindow() { |
+void ChromeLauncherController::CreateNewWindow() { |
chrome::NewEmptyWindow( |
GetProfileForNewWindows(), chrome::HOST_DESKTOP_TYPE_ASH); |
} |
-void ChromeLauncherControllerPerApp::CreateNewIncognitoWindow() { |
+void ChromeLauncherController::CreateNewIncognitoWindow() { |
chrome::NewEmptyWindow(GetProfileForNewWindows()->GetOffTheRecordProfile(), |
chrome::HOST_DESKTOP_TYPE_ASH); |
} |
-bool ChromeLauncherControllerPerApp::CanPin() const { |
+bool ChromeLauncherController::CanPin() const { |
const PrefService::Preference* pref = |
profile_->GetPrefs()->FindPreference(prefs::kPinnedLauncherApps); |
return pref && pref->IsUserModifiable(); |
} |
-void ChromeLauncherControllerPerApp::PersistPinnedState() { |
+void ChromeLauncherController::PersistPinnedState() { |
if (ignore_persist_pinned_state_change_) |
return; |
// It is a coding error to call PersistPinnedState() if the pinned apps are |
@@ -731,21 +731,20 @@ void ChromeLauncherControllerPerApp::PersistPinnedState() { |
} |
pref_change_registrar_.Add( |
prefs::kPinnedLauncherApps, |
- base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref, |
+ base::Bind(&ChromeLauncherController::UpdateAppLaunchersFromPref, |
base::Unretained(this))); |
} |
-ash::LauncherModel* ChromeLauncherControllerPerApp::model() { |
+ash::LauncherModel* ChromeLauncherController::model() { |
return model_; |
} |
-Profile* ChromeLauncherControllerPerApp::profile() { |
+Profile* ChromeLauncherController::profile() { |
return profile_; |
} |
-ash::ShelfAutoHideBehavior |
- ChromeLauncherControllerPerApp::GetShelfAutoHideBehavior( |
- aura::RootWindow* root_window) const { |
+ash::ShelfAutoHideBehavior ChromeLauncherController::GetShelfAutoHideBehavior( |
+ aura::RootWindow* root_window) const { |
// Don't show the shelf in app mode. |
if (chrome::IsRunningInAppMode()) |
return ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; |
@@ -766,13 +765,13 @@ ash::ShelfAutoHideBehavior |
return ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER; |
} |
-bool ChromeLauncherControllerPerApp::CanUserModifyShelfAutoHideBehavior( |
+bool ChromeLauncherController::CanUserModifyShelfAutoHideBehavior( |
aura::RootWindow* root_window) const { |
return profile_->GetPrefs()-> |
FindPreference(prefs::kShelfAutoHideBehaviorLocal)->IsUserModifiable(); |
} |
-void ChromeLauncherControllerPerApp::ToggleShelfAutoHideBehavior( |
+void ChromeLauncherController::ToggleShelfAutoHideBehavior( |
aura::RootWindow* root_window) { |
ash::ShelfAutoHideBehavior behavior = GetShelfAutoHideBehavior(root_window) == |
ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS ? |
@@ -782,7 +781,7 @@ void ChromeLauncherControllerPerApp::ToggleShelfAutoHideBehavior( |
return; |
} |
-void ChromeLauncherControllerPerApp::RemoveTabFromRunningApp( |
+void ChromeLauncherController::RemoveTabFromRunningApp( |
WebContents* tab, |
const std::string& app_id) { |
web_contents_to_app_id_.erase(tab); |
@@ -801,9 +800,8 @@ void ChromeLauncherControllerPerApp::RemoveTabFromRunningApp( |
} |
} |
-void ChromeLauncherControllerPerApp::UpdateAppState( |
- content::WebContents* contents, |
- AppState app_state) { |
+void ChromeLauncherController::UpdateAppState(content::WebContents* contents, |
+ AppState app_state) { |
std::string app_id = GetAppID(contents); |
// Check if the gMail app is loaded and it matches the given content. |
@@ -858,9 +856,8 @@ void ChromeLauncherControllerPerApp::UpdateAppState( |
UpdateBrowserItemStatus(); |
} |
-void ChromeLauncherControllerPerApp::SetRefocusURLPatternForTest( |
- ash::LauncherID id, |
- const GURL& url) { |
+void ChromeLauncherController::SetRefocusURLPatternForTest(ash::LauncherID id, |
+ const GURL& url) { |
DCHECK(HasItemController(id)); |
LauncherItemController* controller = id_to_item_controller_map_[id]; |
@@ -880,14 +877,14 @@ void ChromeLauncherControllerPerApp::SetRefocusURLPatternForTest( |
} |
} |
-const Extension* ChromeLauncherControllerPerApp::GetExtensionForAppID( |
+const Extension* ChromeLauncherController::GetExtensionForAppID( |
const std::string& app_id) const { |
// Some unit tests do not have a real extension. |
return (profile_->GetExtensionService()) ? |
profile_->GetExtensionService()->GetInstalledExtension(app_id) : NULL; |
} |
-void ChromeLauncherControllerPerApp::ActivateWindowOrMinimizeIfActive( |
+void ChromeLauncherController::ActivateWindowOrMinimizeIfActive( |
ui::BaseWindow* window, |
bool allow_minimize) { |
if (window->IsActive() && allow_minimize) { |
@@ -904,8 +901,8 @@ void ChromeLauncherControllerPerApp::ActivateWindowOrMinimizeIfActive( |
} |
} |
-void ChromeLauncherControllerPerApp::ItemSelected(const ash::LauncherItem& item, |
- const ui::Event& event) { |
+void ChromeLauncherController::ItemSelected(const ash::LauncherItem& item, |
+ const ui::Event& event) { |
DCHECK(HasItemController(item.id)); |
LauncherItemController* item_controller = id_to_item_controller_map_[item.id]; |
#if defined(OS_CHROMEOS) |
@@ -917,27 +914,25 @@ void ChromeLauncherControllerPerApp::ItemSelected(const ash::LauncherItem& item, |
item_controller->Clicked(event); |
} |
-string16 ChromeLauncherControllerPerApp::GetTitle( |
- const ash::LauncherItem& item) { |
+string16 ChromeLauncherController::GetTitle(const ash::LauncherItem& item) { |
DCHECK(HasItemController(item.id)); |
return id_to_item_controller_map_[item.id]->GetTitle(); |
} |
-ui::MenuModel* ChromeLauncherControllerPerApp::CreateContextMenu( |
+ui::MenuModel* ChromeLauncherController::CreateContextMenu( |
const ash::LauncherItem& item, |
aura::RootWindow* root_window) { |
return new LauncherContextMenu(this, &item, root_window); |
} |
-ash::LauncherMenuModel* ChromeLauncherControllerPerApp::CreateApplicationMenu( |
+ash::LauncherMenuModel* ChromeLauncherController::CreateApplicationMenu( |
const ash::LauncherItem& item, |
int event_flags) { |
return new LauncherApplicationMenuItemModel(GetApplicationList(item, |
event_flags)); |
} |
-ash::LauncherID ChromeLauncherControllerPerApp::GetIDByWindow( |
- aura::Window* window) { |
+ash::LauncherID ChromeLauncherController::GetIDByWindow(aura::Window* window) { |
int browser_index = ash::launcher::GetBrowserItemIndex(*model_); |
DCHECK_GE(browser_index, 0); |
ash::LauncherID browser_id = model_->items()[browser_index].id; |
@@ -958,13 +953,12 @@ ash::LauncherID ChromeLauncherControllerPerApp::GetIDByWindow( |
return 0; |
} |
-bool ChromeLauncherControllerPerApp::IsDraggable( |
- const ash::LauncherItem& item) { |
+bool ChromeLauncherController::IsDraggable(const ash::LauncherItem& item) { |
return (item.type == ash::TYPE_APP_SHORTCUT || |
item.type == ash::TYPE_WINDOWED_APP) ? CanPin() : true; |
} |
-bool ChromeLauncherControllerPerApp::ShouldShowTooltip( |
+bool ChromeLauncherController::ShouldShowTooltip( |
const ash::LauncherItem& item) { |
if (item.type == ash::TYPE_APP_PANEL && |
id_to_item_controller_map_[item.id]->IsVisible()) |
@@ -972,36 +966,32 @@ bool ChromeLauncherControllerPerApp::ShouldShowTooltip( |
return true; |
} |
-void ChromeLauncherControllerPerApp::OnLauncherCreated( |
- ash::Launcher* launcher) { |
+void ChromeLauncherController::OnLauncherCreated(ash::Launcher* launcher) { |
launchers_.insert(launcher); |
launcher->shelf_widget()->shelf_layout_manager()->AddObserver(this); |
} |
-void ChromeLauncherControllerPerApp::OnLauncherDestroyed( |
- ash::Launcher* launcher) { |
+void ChromeLauncherController::OnLauncherDestroyed(ash::Launcher* launcher) { |
launchers_.erase(launcher); |
// RemoveObserver is not called here, since by the time this method is called |
// Launcher is already in its destructor. |
} |
-void ChromeLauncherControllerPerApp::LauncherItemAdded(int index) { |
+void ChromeLauncherController::LauncherItemAdded(int index) { |
} |
-void ChromeLauncherControllerPerApp::LauncherItemRemoved( |
- int index, |
- ash::LauncherID id) { |
+void ChromeLauncherController::LauncherItemRemoved(int index, |
+ ash::LauncherID id) { |
} |
-void ChromeLauncherControllerPerApp::LauncherItemMoved( |
- int start_index, |
- int target_index) { |
+void ChromeLauncherController::LauncherItemMoved(int start_index, |
+ int target_index) { |
ash::LauncherID id = model_->items()[target_index].id; |
if (HasItemController(id) && IsPinned(id)) |
PersistPinnedState(); |
} |
-void ChromeLauncherControllerPerApp::LauncherItemChanged( |
+void ChromeLauncherController::LauncherItemChanged( |
int index, |
const ash::LauncherItem& old_item) { |
ash::LauncherID id = model_->items()[index].id; |
@@ -1009,10 +999,10 @@ void ChromeLauncherControllerPerApp::LauncherItemChanged( |
id_to_item_controller_map_[id]->LauncherItemChanged(index, old_item); |
} |
-void ChromeLauncherControllerPerApp::LauncherStatusChanged() { |
+void ChromeLauncherController::LauncherStatusChanged() { |
} |
-void ChromeLauncherControllerPerApp::Observe( |
+void ChromeLauncherController::Observe( |
int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
@@ -1056,7 +1046,7 @@ void ChromeLauncherControllerPerApp::Observe( |
} |
} |
-void ChromeLauncherControllerPerApp::OnShelfAlignmentChanged( |
+void ChromeLauncherController::OnShelfAlignmentChanged( |
aura::RootWindow* root_window) { |
const char* pref_value = NULL; |
switch (ash::Shell::GetInstance()->GetShelfAlignment(root_window)) { |
@@ -1083,14 +1073,14 @@ void ChromeLauncherControllerPerApp::OnShelfAlignmentChanged( |
} |
} |
-void ChromeLauncherControllerPerApp::OnDisplayConfigurationChanging() { |
+void ChromeLauncherController::OnDisplayConfigurationChanging() { |
} |
-void ChromeLauncherControllerPerApp::OnDisplayConfigurationChanged() { |
+void ChromeLauncherController::OnDisplayConfigurationChanged() { |
SetShelfBehaviorsFromPrefs(); |
} |
-void ChromeLauncherControllerPerApp::OnIsSyncingChanged() { |
+void ChromeLauncherController::OnIsSyncingChanged() { |
PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile_); |
MaybePropagatePrefToLocal(prefs, |
prefs::kShelfAlignmentLocal, |
@@ -1100,24 +1090,23 @@ void ChromeLauncherControllerPerApp::OnIsSyncingChanged() { |
prefs::kShelfAutoHideBehavior); |
} |
-void ChromeLauncherControllerPerApp::OnAppSyncUIStatusChanged() { |
+void ChromeLauncherController::OnAppSyncUIStatusChanged() { |
if (app_sync_ui_state_->status() == AppSyncUIState::STATUS_SYNCING) |
model_->SetStatus(ash::LauncherModel::STATUS_LOADING); |
else |
model_->SetStatus(ash::LauncherModel::STATUS_NORMAL); |
} |
-void ChromeLauncherControllerPerApp::ExtensionEnableFlowFinished() { |
+void ChromeLauncherController::ExtensionEnableFlowFinished() { |
LaunchApp(extension_enable_flow_->extension_id(), ui::EF_NONE); |
extension_enable_flow_.reset(); |
} |
-void ChromeLauncherControllerPerApp::ExtensionEnableFlowAborted( |
- bool user_initiated) { |
+void ChromeLauncherController::ExtensionEnableFlowAborted(bool user_initiated) { |
extension_enable_flow_.reset(); |
} |
-ChromeLauncherAppMenuItems ChromeLauncherControllerPerApp::GetApplicationList( |
+ChromeLauncherAppMenuItems ChromeLauncherController::GetApplicationList( |
const ash::LauncherItem& item, |
int event_flags) { |
// Make sure that there is a controller associated with the id and that the |
@@ -1130,8 +1119,7 @@ ChromeLauncherAppMenuItems ChromeLauncherControllerPerApp::GetApplicationList( |
} |
std::vector<content::WebContents*> |
-ChromeLauncherControllerPerApp::GetV1ApplicationsFromAppId( |
- std::string app_id) { |
+ChromeLauncherController::GetV1ApplicationsFromAppId(std::string app_id) { |
ash::LauncherID id = GetLauncherIDForAppID(app_id); |
// If there is no such an item pinned to the launcher, no menu gets created. |
@@ -1144,9 +1132,8 @@ ChromeLauncherControllerPerApp::GetV1ApplicationsFromAppId( |
return std::vector<content::WebContents*>(); |
} |
-void ChromeLauncherControllerPerApp::ActivateShellApp( |
- const std::string& app_id, |
- int index) { |
+void ChromeLauncherController::ActivateShellApp(const std::string& app_id, |
+ int index) { |
ash::LauncherID id = GetLauncherIDForAppID(app_id); |
if (id) { |
LauncherItemController* controller = id_to_item_controller_map_[id]; |
@@ -1158,7 +1145,7 @@ void ChromeLauncherControllerPerApp::ActivateShellApp( |
} |
} |
-bool ChromeLauncherControllerPerApp::IsWebContentHandledByApplication( |
+bool ChromeLauncherController::IsWebContentHandledByApplication( |
content::WebContents* web_contents, |
const std::string& app_id) { |
if ((web_contents_to_app_id_.find(web_contents) != |
@@ -1168,7 +1155,7 @@ bool ChromeLauncherControllerPerApp::IsWebContentHandledByApplication( |
return (app_id == kGmailAppId && ContentCanBeHandledByGmailApp(web_contents)); |
} |
-bool ChromeLauncherControllerPerApp::ContentCanBeHandledByGmailApp( |
+bool ChromeLauncherController::ContentCanBeHandledByGmailApp( |
content::WebContents* web_contents) { |
ash::LauncherID id = GetLauncherIDForAppID(kGmailAppId); |
if (id) { |
@@ -1185,7 +1172,7 @@ bool ChromeLauncherControllerPerApp::ContentCanBeHandledByGmailApp( |
return false; |
} |
-gfx::Image ChromeLauncherControllerPerApp::GetAppListIcon( |
+gfx::Image ChromeLauncherController::GetAppListIcon( |
content::WebContents* web_contents) const { |
ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
if (IsIncognito(web_contents)) |
@@ -1198,7 +1185,7 @@ gfx::Image ChromeLauncherControllerPerApp::GetAppListIcon( |
return result; |
} |
-string16 ChromeLauncherControllerPerApp::GetAppListTitle( |
+string16 ChromeLauncherController::GetAppListTitle( |
content::WebContents* web_contents) const { |
string16 title = web_contents->GetTitle(); |
if (!title.empty()) |
@@ -1214,14 +1201,14 @@ string16 ChromeLauncherControllerPerApp::GetAppListTitle( |
return l10n_util::GetStringUTF16(IDS_NEW_TAB_TITLE); |
} |
-void ChromeLauncherControllerPerApp::OnBrowserRemoved(Browser* browser) { |
+void ChromeLauncherController::OnBrowserRemoved(Browser* browser) { |
// When called by a unit test it is possible that there is no shell. |
// In that case, the following function should not get called. |
if (ash::Shell::HasInstance()) |
UpdateBrowserItemStatus(); |
} |
-ash::LauncherID ChromeLauncherControllerPerApp::CreateAppShortcutLauncherItem( |
+ash::LauncherID ChromeLauncherController::CreateAppShortcutLauncherItem( |
const std::string& app_id, |
int index) { |
return CreateAppShortcutLauncherItemWithType(app_id, |
@@ -1229,24 +1216,21 @@ ash::LauncherID ChromeLauncherControllerPerApp::CreateAppShortcutLauncherItem( |
ash::TYPE_APP_SHORTCUT); |
} |
-void ChromeLauncherControllerPerApp::SetAppTabHelperForTest( |
- AppTabHelper* helper) { |
+void ChromeLauncherController::SetAppTabHelperForTest(AppTabHelper* helper) { |
app_tab_helper_.reset(helper); |
} |
-void ChromeLauncherControllerPerApp::SetAppIconLoaderForTest( |
+void ChromeLauncherController::SetAppIconLoaderForTest( |
extensions::AppIconLoader* loader) { |
app_icon_loader_.reset(loader); |
} |
-const std::string& |
-ChromeLauncherControllerPerApp::GetAppIdFromLauncherIdForTest( |
+const std::string& ChromeLauncherController::GetAppIdFromLauncherIdForTest( |
ash::LauncherID id) { |
return id_to_item_controller_map_[id]->app_id(); |
} |
-ash::LauncherID |
-ChromeLauncherControllerPerApp::CreateAppShortcutLauncherItemWithType( |
+ash::LauncherID ChromeLauncherController::CreateAppShortcutLauncherItemWithType( |
const std::string& app_id, |
int index, |
ash::LauncherItemType launcher_item_type) { |
@@ -1257,7 +1241,7 @@ ChromeLauncherControllerPerApp::CreateAppShortcutLauncherItemWithType( |
return launcher_id; |
} |
-void ChromeLauncherControllerPerApp::UpdateBrowserItemStatus() { |
+void ChromeLauncherController::UpdateBrowserItemStatus() { |
// Determine the new browser's active state and change if necessary. |
size_t browser_index = ash::launcher::GetBrowserItemIndex(*model_); |
DCHECK_GE(browser_index, 0u); |
@@ -1300,11 +1284,11 @@ void ChromeLauncherControllerPerApp::UpdateBrowserItemStatus() { |
} |
} |
-Profile* ChromeLauncherControllerPerApp::GetProfileForNewWindows() { |
+Profile* ChromeLauncherController::GetProfileForNewWindows() { |
return ProfileManager::GetDefaultProfileOrOffTheRecord(); |
} |
-void ChromeLauncherControllerPerApp::LauncherItemClosed(ash::LauncherID id) { |
+void ChromeLauncherController::LauncherItemClosed(ash::LauncherID id) { |
IDToItemControllerMap::iterator iter = id_to_item_controller_map_.find(id); |
CHECK(iter != id_to_item_controller_map_.end()); |
CHECK(iter->second); |
@@ -1318,8 +1302,7 @@ void ChromeLauncherControllerPerApp::LauncherItemClosed(ash::LauncherID id) { |
model_->RemoveItemAt(index); |
} |
-void ChromeLauncherControllerPerApp::DoPinAppWithID( |
- const std::string& app_id) { |
+void ChromeLauncherController::DoPinAppWithID(const std::string& app_id) { |
// If there is an item, do nothing and return. |
if (IsAppPinned(app_id)) |
return; |
@@ -1336,8 +1319,7 @@ void ChromeLauncherControllerPerApp::DoPinAppWithID( |
} |
} |
-void ChromeLauncherControllerPerApp::DoUnpinAppsWithID( |
- const std::string& app_id) { |
+void ChromeLauncherController::DoUnpinAppsWithID(const std::string& app_id) { |
for (IDToItemControllerMap::iterator i = id_to_item_controller_map_.begin(); |
i != id_to_item_controller_map_.end(); ) { |
IDToItemControllerMap::iterator current(i); |
@@ -1347,7 +1329,7 @@ void ChromeLauncherControllerPerApp::DoUnpinAppsWithID( |
} |
} |
-void ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref() { |
+void ChromeLauncherController::UpdateAppLaunchersFromPref() { |
// Construct a vector representation of to-be-pinned apps from the pref. |
std::vector<std::string> pinned_apps; |
int chrome_icon_index = GetChromeIconIndexFromPref(); |
@@ -1451,7 +1433,7 @@ void ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref() { |
} |
-void ChromeLauncherControllerPerApp::SetShelfAutoHideBehaviorPrefs( |
+void ChromeLauncherController::SetShelfAutoHideBehaviorPrefs( |
ash::ShelfAutoHideBehavior behavior, |
aura::RootWindow* root_window) { |
const char* value = NULL; |
@@ -1479,7 +1461,7 @@ void ChromeLauncherControllerPerApp::SetShelfAutoHideBehaviorPrefs( |
} |
} |
-void ChromeLauncherControllerPerApp::SetShelfAutoHideBehaviorFromPrefs() { |
+void ChromeLauncherController::SetShelfAutoHideBehaviorFromPrefs() { |
ash::Shell::RootWindowList root_windows = ash::Shell::GetAllRootWindows(); |
for (ash::Shell::RootWindowList::const_iterator iter = root_windows.begin(); |
@@ -1489,7 +1471,7 @@ void ChromeLauncherControllerPerApp::SetShelfAutoHideBehaviorFromPrefs() { |
} |
} |
-void ChromeLauncherControllerPerApp::SetShelfAlignmentFromPrefs() { |
+void ChromeLauncherController::SetShelfAlignmentFromPrefs() { |
if (!ash::ShelfWidget::ShelfAlignmentAllowed()) |
return; |
@@ -1514,12 +1496,12 @@ void ChromeLauncherControllerPerApp::SetShelfAlignmentFromPrefs() { |
} |
} |
-void ChromeLauncherControllerPerApp::SetShelfBehaviorsFromPrefs() { |
+void ChromeLauncherController::SetShelfBehaviorsFromPrefs() { |
SetShelfAutoHideBehaviorFromPrefs(); |
SetShelfAlignmentFromPrefs(); |
} |
-WebContents* ChromeLauncherControllerPerApp::GetLastActiveWebContents( |
+WebContents* ChromeLauncherController::GetLastActiveWebContents( |
const std::string& app_id) { |
AppIDToWebContentsListMap::const_iterator i = |
app_id_to_web_contents_list_.find(app_id); |
@@ -1529,7 +1511,7 @@ WebContents* ChromeLauncherControllerPerApp::GetLastActiveWebContents( |
return *i->second.begin(); |
} |
-ash::LauncherID ChromeLauncherControllerPerApp::InsertAppLauncherItem( |
+ash::LauncherID ChromeLauncherController::InsertAppLauncherItem( |
LauncherItemController* controller, |
const std::string& app_id, |
ash::LauncherItemStatus status, |
@@ -1564,14 +1546,13 @@ ash::LauncherID ChromeLauncherControllerPerApp::InsertAppLauncherItem( |
return id; |
} |
-bool ChromeLauncherControllerPerApp::HasItemController( |
- ash::LauncherID id) const { |
+bool ChromeLauncherController::HasItemController(ash::LauncherID id) const { |
return id_to_item_controller_map_.find(id) != |
id_to_item_controller_map_.end(); |
} |
std::vector<content::WebContents*> |
-ChromeLauncherControllerPerApp::GetV1ApplicationsFromController( |
+ChromeLauncherController::GetV1ApplicationsFromController( |
LauncherItemController* controller) { |
DCHECK(controller->type() == LauncherItemController::TYPE_SHORTCUT); |
AppShortcutLauncherItemController* app_controller = |
@@ -1579,7 +1560,7 @@ ChromeLauncherControllerPerApp::GetV1ApplicationsFromController( |
return app_controller->GetRunningApplications(); |
} |
-bool ChromeLauncherControllerPerApp::IsBrowserRepresentedInBrowserList( |
+bool ChromeLauncherController::IsBrowserRepresentedInBrowserList( |
Browser* browser) { |
return (browser && |
(browser->is_type_tabbed() || |
@@ -1590,7 +1571,7 @@ bool ChromeLauncherControllerPerApp::IsBrowserRepresentedInBrowserList( |
} |
LauncherItemController* |
-ChromeLauncherControllerPerApp::GetBrowserShortcutLauncherItemController() { |
+ChromeLauncherController::GetBrowserShortcutLauncherItemController() { |
for (IDToItemControllerMap::iterator i = id_to_item_controller_map_.begin(); |
i != id_to_item_controller_map_.end(); ++i) { |
int index = model_->ItemIndexByID(i->first); |
@@ -1605,8 +1586,7 @@ ChromeLauncherControllerPerApp::GetBrowserShortcutLauncherItemController() { |
return id_to_item_controller_map_[id]; |
} |
-ash::LauncherID |
-ChromeLauncherControllerPerApp::CreateBrowserShortcutLauncherItem() { |
+ash::LauncherID ChromeLauncherController::CreateBrowserShortcutLauncherItem() { |
ash::LauncherItem browser_shortcut; |
browser_shortcut.type = ash::TYPE_BROWSER_SHORTCUT; |
browser_shortcut.is_incognito = false; |
@@ -1622,11 +1602,11 @@ ChromeLauncherControllerPerApp::CreateBrowserShortcutLauncherItem() { |
return id; |
} |
-void ChromeLauncherControllerPerApp::PersistChromeItemIndex(int index) { |
+void ChromeLauncherController::PersistChromeItemIndex(int index) { |
profile_->GetPrefs()->SetInteger(prefs::kShelfChromeIconIndex, index); |
} |
-int ChromeLauncherControllerPerApp::GetChromeIconIndexFromPref() const { |
+int ChromeLauncherController::GetChromeIconIndexFromPref() const { |
size_t index = profile_->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex); |
const base::ListValue* pinned_apps_pref = |
profile_->GetPrefs()->GetList(prefs::kPinnedLauncherApps); |
@@ -1637,14 +1617,14 @@ int ChromeLauncherControllerPerApp::GetChromeIconIndexFromPref() const { |
std::min(pinned_apps_pref->GetSize(), index)); |
} |
-bool ChromeLauncherControllerPerApp::IsIncognito( |
+bool ChromeLauncherController::IsIncognito( |
content::WebContents* web_contents) const { |
const Profile* profile = |
Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
return profile->IsOffTheRecord() && !profile->IsGuestSession(); |
} |
-void ChromeLauncherControllerPerApp::CloseWindowedAppsFromRemovedExtension( |
+void ChromeLauncherController::CloseWindowedAppsFromRemovedExtension( |
const std::string& app_id) { |
// This function cannot rely on the controller's enumeration functionality |
// since the extension has already be unloaded. |
@@ -1671,7 +1651,7 @@ void ChromeLauncherControllerPerApp::CloseWindowedAppsFromRemovedExtension( |
} |
void |
-ChromeLauncherControllerPerApp::MoveItemWithoutPinnedStateChangeNotification( |
+ChromeLauncherController::MoveItemWithoutPinnedStateChangeNotification( |
int source_index, int target_index) { |
base::AutoReset<bool> auto_reset(&ignore_persist_pinned_state_change_, true); |
model_->Move(source_index, target_index); |