1// Copyright 2014 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 "athena/test/test_app_model_builder.h"
6
7#include "ui/app_list/app_list_item.h"
8#include "ui/app_list/app_list_model.h"
9
10namespace athena {
11
12namespace {
13
14const int kIconSize = 64;
15
16class DummyItem : public app_list::AppListItem {
17 public:
18  enum Type {
19    DUMMY_MAIL,
20    DUMMY_CALENDAR,
21    DUMMY_VIDEO,
22    DUMMY_MUSIC,
23    DUMMY_CONTACT,
24    LAST_TYPE,
25  };
26
27  static std::string GetTitle(Type type) {
28    switch (type) {
29      case DUMMY_MAIL:
30        return "mail";
31      case DUMMY_CALENDAR:
32        return "calendar";
33      case DUMMY_VIDEO:
34        return "video";
35      case DUMMY_MUSIC:
36        return "music";
37      case DUMMY_CONTACT:
38        return "contact";
39      case LAST_TYPE:
40        break;
41    }
42    NOTREACHED();
43    return "";
44  }
45
46  static std::string GetId(Type type) {
47    return std::string("id-") + GetTitle(type);
48  }
49
50  explicit DummyItem(Type type)
51      : app_list::AppListItem(GetId(type)),
52        type_(type) {
53    SetIcon(GetIcon(), false /* has_shadow */);
54    SetName(GetTitle(type_));
55  }
56
57 private:
58  gfx::ImageSkia GetIcon() const {
59    SkColor color = SK_ColorWHITE;
60    switch (type_) {
61      case DUMMY_MAIL:
62        color = SK_ColorRED;
63        break;
64      case DUMMY_CALENDAR:
65        color = SK_ColorBLUE;
66        break;
67      case DUMMY_VIDEO:
68        color = SK_ColorGREEN;
69        break;
70      case DUMMY_MUSIC:
71        color = SK_ColorYELLOW;
72        break;
73      case DUMMY_CONTACT:
74        color = SK_ColorCYAN;
75        break;
76      case LAST_TYPE:
77        NOTREACHED();
78        break;
79    }
80    SkBitmap bitmap;
81    bitmap.allocN32Pixels(kIconSize, kIconSize);
82    bitmap.eraseColor(color);
83    return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
84  }
85
86  Type type_;
87
88  DISALLOW_COPY_AND_ASSIGN(DummyItem);
89};
90
91}  // namespace
92
93TestAppModelBuilder::TestAppModelBuilder() {
94}
95
96TestAppModelBuilder::~TestAppModelBuilder() {
97}
98
99void TestAppModelBuilder::PopulateApps(app_list::AppListModel* model) {
100  for (int i = 0; i < static_cast<int>(DummyItem::LAST_TYPE); ++i) {
101    model->AddItem(scoped_ptr<app_list::AppListItem>(
102        new DummyItem(static_cast<DummyItem::Type>(i))));
103  }
104}
105
106}  // namespace athena
107