Chromium Code Reviews| Index: ash/shell.cc |
| diff --git a/ash/shell.cc b/ash/shell.cc |
| index 4f212649abf29e5cdc93ecc992a66fc62bdf37fc..1eb5c5e924bcddfef8ceafc5f491f2bd25d40687 100644 |
| --- a/ash/shell.cc |
| +++ b/ash/shell.cc |
| @@ -38,6 +38,7 @@ |
| #include "ash/session_state_delegate.h" |
| #include "ash/shelf/app_list_shelf_item_delegate.h" |
| #include "ash/shelf/shelf_layout_manager.h" |
| +#include "ash/shelf/shelf_util.h" |
| #include "ash/shelf/shelf_widget.h" |
| #include "ash/shell_delegate.h" |
| #include "ash/shell_factory.h" |
| @@ -487,13 +488,28 @@ SystemTray* Shell::GetPrimarySystemTray() { |
| LauncherDelegate* Shell::GetLauncherDelegate() { |
| if (!launcher_delegate_) { |
| - // Creates LauncherItemDelegateManager before LauncherDelegate. |
| - launcher_item_delegate_manager_.reset(new LauncherItemDelegateManager); |
| launcher_model_.reset(new LauncherModel); |
| + // Creates LauncherItemDelegateManager before LauncherDelegate. |
| + launcher_item_delegate_manager_.reset( |
| + new LauncherItemDelegateManager(launcher_model_.get())); |
| + |
| launcher_delegate_.reset( |
| delegate_->CreateLauncherDelegate(launcher_model_.get())); |
| - app_list_shelf_item_delegate_.reset( |
| + scoped_ptr<LauncherItemDelegate> controller( |
| new internal::AppListShelfItemDelegate); |
| + |
| + ash::LauncherID app_list_id = 0; |
| + // TODO(simon.hong81): Make function for this in shelf_util.h |
|
Mr4D (OOO till 08-26)
2013/10/09 16:14:08
Would be nice to add a comment here like:
// Findi
simonhong_
2013/10/09 22:14:10
Done.
|
| + for (size_t i = 0; i < launcher_model_->items().size(); ++i) { |
| + if (launcher_model_->items()[i].type == ash::TYPE_APP_LIST) { |
| + app_list_id = launcher_model_->items()[i].id; |
| + break; |
| + } |
| + } |
| + DCHECK(app_list_id); |
| + launcher_item_delegate_manager_->SetLauncherItemDelegate( |
| + app_list_id, |
| + controller.Pass()); |
| } |
| return launcher_delegate_.get(); |
| } |
| @@ -642,6 +658,9 @@ Shell::~Shell() { |
| user_action_client_.reset(); |
| visibility_controller_.reset(); |
| launcher_delegate_.reset(); |
| + // |launcher_item_delegate_manager_| observes |launcher_model_|. It must be |
| + // destroyed before |launcher_model_| is destroyed. |
| + launcher_item_delegate_manager_.reset(); |
| launcher_model_.reset(); |
| video_detector_.reset(); |