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

Unified Diff: ash/shell.cc

Issue 2791463002: mash: Remove ShelfDelegate; move functions to ShelfModel. (Closed)
Patch Set: Sync and rebase; cleanup. Created 3 years, 8 months 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: ash/shell.cc
diff --git a/ash/shell.cc b/ash/shell.cc
index a58793af529bb49f9a2e931ead84ec4e8ecbdd8a..f997f016a060f97251bf76fd5b4636b3ba69c361 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -55,7 +55,6 @@
#include "ash/session/session_controller.h"
#include "ash/session/session_state_delegate.h"
#include "ash/shelf/shelf_controller.h"
-#include "ash/shelf/shelf_delegate.h"
#include "ash/shelf/shelf_model.h"
#include "ash/shelf/shelf_window_watcher.h"
#include "ash/shelf/wm_shelf.h"
@@ -413,8 +412,13 @@ void Shell::CreateShelfView() {
// Must occur after SessionController creation and user login.
DCHECK(session_controller());
DCHECK_GT(session_controller()->NumberOfLoggedInUsers(), 0);
- CreateShelfDelegate();
+ // Notify the ShellDelegate that the shelf is being initialized.
+ // TODO(msw): Refine ChromeLauncherControllerImpl lifetime management.
+ shell_delegate_->ShelfInit();
James Cook 2017/04/19 00:23:47 Aside: It's unfortunate that ShelfInit() code has
msw 2017/04/19 20:56:06 Acknowledged.
+
+ if (!shelf_window_watcher_)
+ shelf_window_watcher_ = base::MakeUnique<ShelfWindowWatcher>(shelf_model());
for (WmWindow* root_window : shell_port_->GetAllRootWindows())
root_window->GetRootWindowController()->CreateShelfView();
}
@@ -727,8 +731,9 @@ Shell::~Shell() {
// shelf items in Chrome) so explicitly shutdown early.
shelf_model()->DestroyItemDelegates();
- // Must be destroyed before FocusController.
- shelf_delegate_.reset();
+ // Notify the ShellDelegate that the shelf is shutting down.
+ // TODO(msw): Refine ChromeLauncherControllerImpl lifetime management.
+ shell_delegate_->ShelfShutdown();
// Removes itself as an observer of |pref_service_|.
shelf_controller_.reset();
@@ -1167,19 +1172,6 @@ void Shell::CloseAllRootWindowChildWindows() {
}
}
-void Shell::CreateShelfDelegate() {
- // May be called multiple times as shelves are created and destroyed.
- if (shelf_delegate_)
- return;
- // Must occur after SessionController creation and user login because
- // Chrome's implementation of ShelfDelegate assumes it can get information
- // about multi-profile login state.
- DCHECK(session_controller());
- DCHECK_GT(session_controller()->NumberOfLoggedInUsers(), 0);
- shelf_delegate_.reset(shell_delegate_->CreateShelfDelegate(shelf_model()));
- shelf_window_watcher_ = base::MakeUnique<ShelfWindowWatcher>(shelf_model());
-}
-
bool Shell::CanWindowReceiveEvents(aura::Window* window) {
RootWindowControllerList controllers = GetAllRootWindowControllers();
for (RootWindowController* controller : controllers) {

Powered by Google App Engine
This is Rietveld 408576698