Commit 5dc5dc4f authored by Jiaquan He's avatar Jiaquan He Committed by Commit Bot

app_list: move AppListModel::Status into //ash/public.

It's used in Chrome.

Bug: 733662
Change-Id: I538cccaf1282b8de2ded93c3c93cb52bb789e250
Reviewed-on: https://chromium-review.googlesource.com/882136Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Jiaquan He <hejq@google.com>
Cr-Commit-Position: refs/heads/master@{#532702}
parent 36f48353
......@@ -30,7 +30,7 @@ void AppListModel::RemoveObserver(AppListModelObserver* observer) {
observers_.RemoveObserver(observer);
}
void AppListModel::SetStatus(Status status) {
void AppListModel::SetStatus(ash::AppListModelStatus status) {
if (status_ == status)
return;
......
......@@ -33,18 +33,13 @@ class AppListModelObserver;
// the model needs to notify its observers when this occurs.
class APP_LIST_MODEL_EXPORT AppListModel : public AppListItemListObserver {
public:
enum Status {
STATUS_NORMAL,
STATUS_SYNCING, // Syncing apps or installing synced apps.
};
AppListModel();
~AppListModel() override;
void AddObserver(AppListModelObserver* observer);
void RemoveObserver(AppListModelObserver* observer);
void SetStatus(Status status);
void SetStatus(ash::AppListModelStatus status);
void SetState(ash::AppListState state);
ash::AppListState state() const { return state_; }
......@@ -122,7 +117,7 @@ class APP_LIST_MODEL_EXPORT AppListModel : public AppListItemListObserver {
AppListItemList* top_level_item_list() { return top_level_item_list_.get(); }
Status status() const { return status_; }
ash::AppListModelStatus status() const { return status_; }
private:
// AppListItemListObserver
......@@ -159,7 +154,7 @@ class APP_LIST_MODEL_EXPORT AppListModel : public AppListItemListObserver {
std::unique_ptr<AppListItemList> top_level_item_list_;
Status status_ = STATUS_NORMAL;
ash::AppListModelStatus status_ = ash::AppListModelStatus::kStatusNormal;
ash::AppListState state_ = ash::AppListState::kInvalidState;
// The AppListView state. Controlled by the AppListView.
AppListViewState state_fullscreen_ = AppListViewState::CLOSED;
......
......@@ -47,6 +47,34 @@ struct EnumTraits<ash::mojom::AppListState, ash::AppListState> {
}
};
template <>
struct EnumTraits<ash::mojom::AppListModelStatus, ash::AppListModelStatus> {
static ash::mojom::AppListModelStatus ToMojom(ash::AppListModelStatus input) {
switch (input) {
case ash::AppListModelStatus::kStatusNormal:
return ash::mojom::AppListModelStatus::kStatusNormal;
case ash::AppListModelStatus::kStatusSyncing:
return ash::mojom::AppListModelStatus::kStatusSyncing;
}
NOTREACHED();
return ash::mojom::AppListModelStatus::kStatusNormal;
}
static bool FromMojom(ash::mojom::AppListModelStatus input,
ash::AppListModelStatus* out) {
switch (input) {
case ash::mojom::AppListModelStatus::kStatusNormal:
*out = ash::AppListModelStatus::kStatusNormal;
return true;
case ash::mojom::AppListModelStatus::kStatusSyncing:
*out = ash::AppListModelStatus::kStatusSyncing;
return true;
}
NOTREACHED();
return false;
}
};
} // namespace mojo
#endif // ASH_PUBLIC_CPP_APP_LIST_APP_LIST_STRUCT_TRAITS_H_
......@@ -22,6 +22,12 @@ enum class ASH_PUBLIC_EXPORT AppListState {
kStateLast = kInvalidState, // Don't use over IPC
};
// The status of the app list model.
enum class ASH_PUBLIC_EXPORT AppListModelStatus {
kStatusNormal,
kStatusSyncing, // Syncing apps or installing synced apps.
};
} // namespace ash
#endif // ASH_PUBLIC_CPP_APP_LIST_APP_LIST_TYPES_H_
......@@ -25,3 +25,9 @@ enum AppListState {
kStateSearchResults,
kStateStart,
};
// The status of the app list model.
enum AppListModelStatus {
kStatusNormal,
kStatusSyncing, // Syncing apps or installing synced apps.
};
......@@ -5,4 +5,7 @@
mojom = "//ash/public/interfaces/app_list.mojom"
public_headers = [ "//ash/public/cpp/app_list/app_list_types.h" ]
traits_headers = [ "//ash/public/cpp/app_list/app_list_struct_traits.h" ]
type_mappings = [ "ash.mojom.AppListState=ash::AppListState" ]
type_mappings = [
"ash.mojom.AppListState=ash::AppListState",
"ash.mojom.AppListModelStatus=ash::AppListModelStatus",
]
......@@ -46,7 +46,7 @@ class AppListModelUpdater {
virtual void RemoveUninstalledItem(const std::string& id) {}
virtual void MoveItemToFolder(const std::string& id,
const std::string& folder_id) {}
virtual void SetStatus(app_list::AppListModel::Status status) {}
virtual void SetStatus(ash::AppListModelStatus status) {}
virtual void SetState(ash::AppListState state) {}
virtual void HighlightItemInstalledFromUI(const std::string& id) {}
// For SearchModel:
......
......@@ -58,8 +58,7 @@ void ChromeAppListModelUpdater::MoveItemToFolder(const std::string& id,
model_->MoveItemToFolder(item, folder_id);
}
void ChromeAppListModelUpdater::SetStatus(
app_list::AppListModel::Status status) {
void ChromeAppListModelUpdater::SetStatus(ash::AppListModelStatus status) {
model_->SetStatus(status);
}
......
......@@ -35,7 +35,7 @@ class ChromeAppListModelUpdater : public app_list::AppListModelObserver,
void RemoveUninstalledItem(const std::string& id) override;
void MoveItemToFolder(const std::string& id,
const std::string& folder_id) override;
void SetStatus(app_list::AppListModel::Status status) override;
void SetStatus(ash::AppListModelStatus status) override;
void SetState(ash::AppListState state) override;
void HighlightItemInstalledFromUI(const std::string& id) override;
void SetSearchEngineIsGoogle(bool is_google) override;
......
......@@ -24,7 +24,7 @@ AppSyncUIStateWatcher::~AppSyncUIStateWatcher() {
void AppSyncUIStateWatcher::OnAppSyncUIStatusChanged() {
if (app_sync_ui_state_->status() == AppSyncUIState::STATUS_SYNCING)
model_updater_->SetStatus(app_list::AppListModel::STATUS_SYNCING);
model_updater_->SetStatus(ash::AppListModelStatus::kStatusSyncing);
else
model_updater_->SetStatus(app_list::AppListModel::STATUS_NORMAL);
model_updater_->SetStatus(ash::AppListModelStatus::kStatusNormal);
}
......@@ -105,14 +105,14 @@ class AppListModelTest : public testing::Test {
};
TEST_F(AppListModelTest, SetStatus) {
EXPECT_EQ(AppListModel::STATUS_NORMAL, model_.status());
model_.SetStatus(AppListModel::STATUS_SYNCING);
EXPECT_EQ(ash::AppListModelStatus::kStatusNormal, model_.status());
model_.SetStatus(ash::AppListModelStatus::kStatusSyncing);
EXPECT_EQ(1, observer_.status_changed_count());
EXPECT_EQ(AppListModel::STATUS_SYNCING, model_.status());
model_.SetStatus(AppListModel::STATUS_NORMAL);
EXPECT_EQ(ash::AppListModelStatus::kStatusSyncing, model_.status());
model_.SetStatus(ash::AppListModelStatus::kStatusNormal);
EXPECT_EQ(2, observer_.status_changed_count());
// Set the same status, no change is expected.
model_.SetStatus(AppListModel::STATUS_NORMAL);
model_.SetStatus(ash::AppListModelStatus::kStatusNormal);
EXPECT_EQ(2, observer_.status_changed_count());
}
......
......@@ -1030,7 +1030,9 @@ void AppsGridView::UpdatePulsingBlockViews() {
const int available_slots =
TilesPerPage(current_page) - existing_items % TilesPerPage(current_page);
const int desired =
model_->status() == AppListModel::STATUS_SYNCING ? available_slots : 0;
model_->status() == ash::AppListModelStatus::kStatusSyncing
? available_slots
: 0;
if (pulsing_blocks_model_.view_size() == desired)
return;
......
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