Commit 922a0048 authored by Jiaquan He's avatar Jiaquan He Committed by Commit Bot

app_list: use the proper model updater in ChromeAppListItem.

This commit passes the model updater from a model builder to its items
so that changes can be synced to AppListModel in ash.
The model updater is set after the item is constructed since we don't
want to sync changes in its constructor.

Bug: 733662
Change-Id: I7475141ffa066ef9a9da750c774ee9ee5181b197
Reviewed-on: https://chromium-review.googlesource.com/861226
Commit-Queue: Jiaquan He <hejq@google.com>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#530304}
parent 9de4b776
...@@ -338,7 +338,7 @@ TEST_F(AppContextMenuTest, ArcMenu) { ...@@ -338,7 +338,7 @@ TEST_F(AppContextMenuTest, ArcMenu) {
arc_test.app_instance()->RefreshAppList(); arc_test.app_instance()->RefreshAppList();
arc_test.app_instance()->SendRefreshAppList(arc_test.fake_apps()); arc_test.app_instance()->SendRefreshAppList(arc_test.fake_apps());
ArcAppItem item(profile(), nullptr, app_id, std::string()); ArcAppItem item(profile(), nullptr, nullptr, app_id, std::string());
ui::MenuModel* menu = item.GetContextMenuModel(); ui::MenuModel* menu = item.GetContextMenuModel();
ASSERT_NE(nullptr, menu); ASSERT_NE(nullptr, menu);
...@@ -413,7 +413,7 @@ TEST_F(AppContextMenuTest, ArcMenuShortcut) { ...@@ -413,7 +413,7 @@ TEST_F(AppContextMenuTest, ArcMenuShortcut) {
arc_test.app_instance()->SendInstallShortcuts(arc_test.fake_shortcuts()); arc_test.app_instance()->SendInstallShortcuts(arc_test.fake_shortcuts());
ArcAppItem item(profile(), nullptr, app_id, std::string()); ArcAppItem item(profile(), nullptr, nullptr, app_id, std::string());
ui::MenuModel* menu = item.GetContextMenuModel(); ui::MenuModel* menu = item.GetContextMenuModel();
ASSERT_NE(nullptr, menu); ASSERT_NE(nullptr, menu);
...@@ -457,7 +457,7 @@ TEST_F(AppContextMenuTest, ArcMenuStickyItem) { ...@@ -457,7 +457,7 @@ TEST_F(AppContextMenuTest, ArcMenuStickyItem) {
const std::string store_id = ArcAppTest::GetAppId(store_info); const std::string store_id = ArcAppTest::GetAppId(store_info);
controller()->SetAppPinnable(store_id, controller()->SetAppPinnable(store_id,
AppListControllerDelegate::PIN_EDITABLE); AppListControllerDelegate::PIN_EDITABLE);
ArcAppItem item(profile(), nullptr, store_id, std::string()); ArcAppItem item(profile(), nullptr, nullptr, store_id, std::string());
ui::MenuModel* menu = item.GetContextMenuModel(); ui::MenuModel* menu = item.GetContextMenuModel();
ASSERT_NE(nullptr, menu); ASSERT_NE(nullptr, menu);
......
...@@ -19,6 +19,7 @@ const char ArcAppItem::kItemType[] = "ArcAppItem"; ...@@ -19,6 +19,7 @@ const char ArcAppItem::kItemType[] = "ArcAppItem";
ArcAppItem::ArcAppItem( ArcAppItem::ArcAppItem(
Profile* profile, Profile* profile,
AppListModelUpdater* model_updater,
const app_list::AppListSyncableService::SyncItem* sync_item, const app_list::AppListSyncableService::SyncItem* sync_item,
const std::string& id, const std::string& id,
const std::string& name) const std::string& name)
...@@ -36,6 +37,9 @@ ArcAppItem::ArcAppItem( ...@@ -36,6 +37,9 @@ ArcAppItem::ArcAppItem(
UpdateFromSync(sync_item); UpdateFromSync(sync_item);
else else
SetDefaultPositionIfApplicable(); SetDefaultPositionIfApplicable();
// Set model updater last to avoid being called during construction.
set_model_updater(model_updater);
} }
ArcAppItem::~ArcAppItem() { ArcAppItem::~ArcAppItem() {
......
...@@ -24,6 +24,7 @@ class ArcAppItem : public ChromeAppListItem, ...@@ -24,6 +24,7 @@ class ArcAppItem : public ChromeAppListItem,
static const char kItemType[]; static const char kItemType[];
ArcAppItem(Profile* profile, ArcAppItem(Profile* profile,
AppListModelUpdater* model_updater,
const app_list::AppListSyncableService::SyncItem* sync_item, const app_list::AppListSyncableService::SyncItem* sync_item,
const std::string& id, const std::string& id,
const std::string& name); const std::string& name);
......
...@@ -42,8 +42,8 @@ ArcAppItem* ArcAppModelBuilder::GetArcAppItem(const std::string& app_id) { ...@@ -42,8 +42,8 @@ ArcAppItem* ArcAppModelBuilder::GetArcAppItem(const std::string& app_id) {
std::unique_ptr<ArcAppItem> ArcAppModelBuilder::CreateApp( std::unique_ptr<ArcAppItem> ArcAppModelBuilder::CreateApp(
const std::string& app_id, const std::string& app_id,
const ArcAppListPrefs::AppInfo& app_info) { const ArcAppListPrefs::AppInfo& app_info) {
return std::make_unique<ArcAppItem>(profile(), GetSyncItem(app_id), app_id, return std::make_unique<ArcAppItem>(
app_info.name); profile(), model_updater(), GetSyncItem(app_id), app_id, app_info.name);
} }
void ArcAppModelBuilder::OnAppRegistered( void ArcAppModelBuilder::OnAppRegistered(
......
...@@ -32,9 +32,7 @@ gfx::ImageSkia ChromeAppListItem::CreateDisabledIcon( ...@@ -32,9 +32,7 @@ gfx::ImageSkia ChromeAppListItem::CreateDisabledIcon(
ChromeAppListItem::ChromeAppListItem(Profile* profile, ChromeAppListItem::ChromeAppListItem(Profile* profile,
const std::string& app_id) const std::string& app_id)
: app_list::AppListItem(app_id), : app_list::AppListItem(app_id), profile_(profile) {}
profile_(profile) {
}
ChromeAppListItem::~ChromeAppListItem() { ChromeAppListItem::~ChromeAppListItem() {
} }
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "ash/app_list/model/app_list_item.h" #include "ash/app_list/model/app_list_item.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/ui/app_list/app_list_model_updater.h"
#include "chrome/browser/ui/app_list/app_list_syncable_service.h" #include "chrome/browser/ui/app_list/app_list_syncable_service.h"
class AppListControllerDelegate; class AppListControllerDelegate;
...@@ -84,6 +85,11 @@ class ChromeAppListItem : public app_list::AppListItem { ...@@ -84,6 +85,11 @@ class ChromeAppListItem : public app_list::AppListItem {
AppListControllerDelegate* GetController(); AppListControllerDelegate* GetController();
AppListModelUpdater* model_updater() { return model_updater_; }
void set_model_updater(AppListModelUpdater* model_updater) {
model_updater_ = model_updater;
}
// Updates item position and name from |sync_item|. |sync_item| must be valid. // Updates item position and name from |sync_item|. |sync_item| must be valid.
void UpdateFromSync( void UpdateFromSync(
const app_list::AppListSyncableService::SyncItem* sync_item); const app_list::AppListSyncableService::SyncItem* sync_item);
...@@ -93,6 +99,7 @@ class ChromeAppListItem : public app_list::AppListItem { ...@@ -93,6 +99,7 @@ class ChromeAppListItem : public app_list::AppListItem {
private: private:
Profile* profile_; Profile* profile_;
AppListModelUpdater* model_updater_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(ChromeAppListItem); DISALLOW_COPY_AND_ASSIGN(ChromeAppListItem);
}; };
......
...@@ -40,6 +40,7 @@ using extensions::Extension; ...@@ -40,6 +40,7 @@ using extensions::Extension;
ExtensionAppItem::ExtensionAppItem( ExtensionAppItem::ExtensionAppItem(
Profile* profile, Profile* profile,
AppListModelUpdater* model_updater,
const app_list::AppListSyncableService::SyncItem* sync_item, const app_list::AppListSyncableService::SyncItem* sync_item,
const std::string& extension_id, const std::string& extension_id,
const std::string& extension_name, const std::string& extension_name,
...@@ -55,6 +56,9 @@ ExtensionAppItem::ExtensionAppItem( ...@@ -55,6 +56,9 @@ ExtensionAppItem::ExtensionAppItem(
UpdateFromSync(sync_item); UpdateFromSync(sync_item);
else else
SetDefaultPositionIfApplicable(); SetDefaultPositionIfApplicable();
// Set model updater last to avoid being called during construction.
set_model_updater(model_updater);
} }
ExtensionAppItem::~ExtensionAppItem() { ExtensionAppItem::~ExtensionAppItem() {
......
...@@ -38,6 +38,7 @@ class ExtensionAppItem : public ChromeAppListItem, ...@@ -38,6 +38,7 @@ class ExtensionAppItem : public ChromeAppListItem,
static const char kItemType[]; static const char kItemType[];
ExtensionAppItem(Profile* profile, ExtensionAppItem(Profile* profile,
AppListModelUpdater* model_updater,
const app_list::AppListSyncableService::SyncItem* sync_item, const app_list::AppListSyncableService::SyncItem* sync_item,
const std::string& extension_id, const std::string& extension_id,
const std::string& extension_name, const std::string& extension_name,
......
...@@ -176,8 +176,8 @@ std::unique_ptr<ExtensionAppItem> ExtensionAppModelBuilder::CreateAppItem( ...@@ -176,8 +176,8 @@ std::unique_ptr<ExtensionAppItem> ExtensionAppModelBuilder::CreateAppItem(
const gfx::ImageSkia& installing_icon, const gfx::ImageSkia& installing_icon,
bool is_platform_app) { bool is_platform_app) {
return std::make_unique<ExtensionAppItem>( return std::make_unique<ExtensionAppItem>(
profile(), GetSyncItem(extension_id), extension_id, extension_name, profile(), model_updater(), GetSyncItem(extension_id), extension_id,
installing_icon, is_platform_app); extension_name, installing_icon, is_platform_app);
} }
void ExtensionAppModelBuilder::BuildModel() { void ExtensionAppModelBuilder::BuildModel() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment