app_list_test_model.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ui/app_list/test/app_list_test_model.h"
6
7#include "base/memory/scoped_ptr.h"
8#include "base/strings/stringprintf.h"
9
10namespace app_list {
11namespace test {
12
13// static
14const char AppListTestModel::kItemType[] = "TestItem";
15
16// AppListTestModel::AppListTestItem
17
18AppListTestModel::AppListTestItem::AppListTestItem(
19    const std::string& id,
20    AppListTestModel* model)
21    : AppListItem(id),
22      model_(model) {
23}
24AppListTestModel::AppListTestItem::~AppListTestItem() {
25}
26
27void AppListTestModel::AppListTestItem::Activate(int event_flags) {
28  model_->ItemActivated(this);
29}
30
31const char* AppListTestModel::AppListTestItem::GetItemType() const {
32  return AppListTestModel::kItemType;
33}
34
35void AppListTestModel::AppListTestItem::SetPosition(
36    const syncer::StringOrdinal& new_position) {
37  set_position(new_position);
38}
39
40// AppListTestModel
41
42AppListTestModel::AppListTestModel()
43    : activate_count_(0),
44      last_activated_(NULL) {
45}
46
47AppListItem* AppListTestModel::AddItem(AppListItem* item) {
48  return AppListModel::AddItem(make_scoped_ptr(item));
49}
50
51AppListItem* AppListTestModel::AddItemToFolder(AppListItem* item,
52                                               const std::string& folder_id) {
53  return AppListModel::AddItemToFolder(make_scoped_ptr(item), folder_id);
54}
55
56void AppListTestModel::MoveItemToFolder(AppListItem* item,
57                                          const std::string& folder_id) {
58  AppListModel::MoveItemToFolder(item, folder_id);
59}
60
61
62std::string AppListTestModel::GetItemName(int id) {
63  return base::StringPrintf("Item %d", id);
64}
65
66void AppListTestModel::PopulateApps(int n) {
67  int start_index = static_cast<int>(top_level_item_list()->item_count());
68  for (int i = 0; i < n; ++i)
69    CreateAndAddItem(GetItemName(start_index + i));
70}
71
72void AppListTestModel::PopulateAppWithId(int id) {
73  CreateAndAddItem(GetItemName(id));
74}
75
76std::string AppListTestModel::GetModelContent() {
77  std::string content;
78  for (size_t i = 0; i < top_level_item_list()->item_count(); ++i) {
79    if (i > 0)
80      content += ',';
81    content += top_level_item_list()->item_at(i)->id();
82  }
83  return content;
84}
85
86AppListTestModel::AppListTestItem* AppListTestModel::CreateItem(
87    const std::string& id) {
88  AppListTestItem* item = new AppListTestItem(id, this);
89  size_t nitems = top_level_item_list()->item_count();
90  syncer::StringOrdinal position;
91  if (nitems == 0) {
92    position = syncer::StringOrdinal::CreateInitialOrdinal();
93  } else {
94    position =
95        top_level_item_list()->item_at(nitems - 1)->position().CreateAfter();
96  }
97  item->SetPosition(position);
98  SetItemName(item, id);
99  return item;
100}
101
102AppListTestModel::AppListTestItem* AppListTestModel::CreateAndAddItem(
103    const std::string& id) {
104  scoped_ptr<AppListTestItem> test_item(CreateItem(id));
105  AppListItem* item = AppListModel::AddItem(test_item.PassAs<AppListItem>());
106  return static_cast<AppListTestItem*>(item);
107}
108void AppListTestModel::HighlightItemAt(int index) {
109  AppListItem* item = top_level_item_list()->item_at(index);
110  item->SetHighlighted(true);
111}
112
113void AppListTestModel::ItemActivated(AppListTestItem* item) {
114  last_activated_ = item;
115  ++activate_count_;
116}
117
118}  // namespace test
119}  // namespace app_list
120