Index: chrome/browser/ui/app_list/app_list_shower_views.h |
diff --git a/chrome/browser/ui/app_list/app_list_shower.h b/chrome/browser/ui/app_list/app_list_shower_views.h |
similarity index 49% |
rename from chrome/browser/ui/app_list/app_list_shower.h |
rename to chrome/browser/ui/app_list/app_list_shower_views.h |
index 4228d951a4a55a26074610727d3d4ea3ecdd9b09..f574a2f641118bb82b1b2b237975c92a6abedcdd 100644 |
--- a/chrome/browser/ui/app_list/app_list_shower.h |
+++ b/chrome/browser/ui/app_list/app_list_shower_views.h |
@@ -2,65 +2,74 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SHOWER_H_ |
-#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SHOWER_H_ |
+#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SHOWER_VIEWS_H_ |
+#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SHOWER_VIEWS_H_ |
#include "base/memory/scoped_ptr.h" |
-#include "chrome/browser/ui/app_list/app_list.h" |
-#include "chrome/browser/ui/app_list/app_list_factory.h" |
#include "ui/app_list/pagination_model.h" |
#include "ui/gfx/native_widget_types.h" |
namespace app_list { |
-class AppListModel; |
+class AppListView; |
} |
+class AppListShowerDelegate; |
class AppListShowerUnitTest; |
class Profile; |
class ScopedKeepAlive; |
-// Creates and shows an AppList as needed for non-Ash desktops. It is owned |
-// by AppListService. |
+// Creates and shows an AppList as needed for non-Ash desktops. It is owned by |
+// AppListServiceViews. |
class AppListShower { |
public: |
- AppListShower(scoped_ptr<AppListFactory> factory, |
- AppListService* service); |
- ~AppListShower(); |
- |
- void set_can_close(bool can_close) { |
- can_close_app_list_ = can_close; |
- } |
+ explicit AppListShower(AppListShowerDelegate* delegate); |
+ virtual ~AppListShower(); |
void ShowForProfile(Profile* requested_profile); |
gfx::NativeWindow GetWindow(); |
- AppList* app_list() { return app_list_.get(); } |
+ app_list::AppListView* app_list() { return app_list_; } |
Profile* profile() const { return profile_; } |
// Create or recreate, and initialize |app_list_| from |requested_profile|. |
void CreateViewForProfile(Profile* requested_profile); |
void DismissAppList(); |
- void HandleViewBeingDestroyed(); |
- bool IsAppListVisible() const; |
+ |
+ // Virtual functions mocked out in tests. |
+ virtual void HandleViewBeingDestroyed(); |
+ virtual bool IsAppListVisible() const; |
void WarmupForProfile(Profile* profile); |
- bool HasView() const; |
+ virtual bool HasView() const; |
+ |
+ protected: |
+ virtual app_list::AppListView* MakeViewForCurrentProfile(); |
+ virtual void UpdateViewForNewProfile(); |
+ |
+ // Shows the app list, activates it, and ensures the taskbar icon is updated. |
+ virtual void Show(); |
+ virtual void Hide(); |
private: |
friend class ::AppListShowerUnitTest; |
void ResetKeepAlive(); |
- scoped_ptr<AppListFactory> factory_; |
- scoped_ptr<ScopedKeepAlive> keep_alive_; |
- scoped_ptr<AppList> app_list_; |
- AppListService* service_; // Weak ptr, owns this. |
+ AppListShowerDelegate* delegate_; // Weak. Owns this. |
+ |
+ // The profile currently shown by |app_list_|. |
Profile* profile_; |
- bool can_close_app_list_; |
+ |
+ // The view, once created. Owned by native widget. |
+ app_list::AppListView* app_list_; |
// Used to keep the browser process alive while the app list is visible. |
+ scoped_ptr<ScopedKeepAlive> keep_alive_; |
+ |
+ bool window_icon_updated_; |
+ app_list::PaginationModel pagination_model_; |
DISALLOW_COPY_AND_ASSIGN(AppListShower); |
}; |
-#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SHOWER_H_ |
+#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SHOWER_VIEWS_H_ |