Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: athena/content/content_app_model_builder.cc

Issue 487843003: ExtensionDelegate to abstract extension implementation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix deps Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « athena/content/app_activity_unittest.cc ('k') | athena/extensions/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "athena/content/public/content_app_model_builder.h" 5 #include "athena/content/public/content_app_model_builder.h"
6 6
7 #include "athena/activity/public/activity_factory.h" 7 #include "athena/activity/public/activity_factory.h"
8 #include "athena/activity/public/activity_manager.h" 8 #include "athena/activity/public/activity_manager.h"
9 #include "athena/extensions/public/extensions_delegate.h"
9 #include "extensions/browser/extension_icon_image.h" 10 #include "extensions/browser/extension_icon_image.h"
10 #include "extensions/common/constants.h" 11 #include "extensions/common/constants.h"
11 #include "extensions/common/extension.h" 12 #include "extensions/common/extension_set.h"
12 #include "extensions/common/manifest_handlers/icons_handler.h" 13 #include "extensions/common/manifest_handlers/icons_handler.h"
13 #include "extensions/shell/browser/shell_extension_system.h"
14 #include "ui/app_list/app_list_item.h" 14 #include "ui/app_list/app_list_item.h"
15 #include "ui/app_list/app_list_model.h" 15 #include "ui/app_list/app_list_model.h"
16 16
17 using extensions::ShellExtensionSystem;
18
19 namespace athena { 17 namespace athena {
20 18
21 namespace { 19 namespace {
22 20
23 ShellExtensionSystem* GetShellExtensionSystem(
24 content::BrowserContext* context) {
25 return static_cast<ShellExtensionSystem*>(
26 extensions::ExtensionSystem::Get(context));
27 }
28
29 gfx::ImageSkia CreateFlatColorImage(SkColor color) { 21 gfx::ImageSkia CreateFlatColorImage(SkColor color) {
30 SkBitmap bitmap; 22 SkBitmap bitmap;
31 bitmap.allocN32Pixels(extension_misc::EXTENSION_ICON_MEDIUM, 23 bitmap.allocN32Pixels(extension_misc::EXTENSION_ICON_MEDIUM,
32 extension_misc::EXTENSION_ICON_MEDIUM); 24 extension_misc::EXTENSION_ICON_MEDIUM);
33 bitmap.eraseColor(color); 25 bitmap.eraseColor(color);
34 return gfx::ImageSkia::CreateFrom1xBitmap(bitmap); 26 return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
35 } 27 }
36 28
37 // Same dummy item. 29 // Same dummy item.
38 class DummyItem : public app_list::AppListItem { 30 class DummyItem : public app_list::AppListItem {
(...skipping 18 matching lines...) Expand all
57 } 49 }
58 50
59 GURL url_; 51 GURL url_;
60 content::BrowserContext* browser_context_; 52 content::BrowserContext* browser_context_;
61 53
62 DISALLOW_COPY_AND_ASSIGN(DummyItem); 54 DISALLOW_COPY_AND_ASSIGN(DummyItem);
63 }; 55 };
64 56
65 class AppItem : public app_list::AppListItem { 57 class AppItem : public app_list::AppListItem {
66 public: 58 public:
67 AppItem(scoped_refptr<extensions::Extension> extension, 59 AppItem(scoped_refptr<const extensions::Extension> extension,
68 content::BrowserContext* browser_context) 60 content::BrowserContext* browser_context)
69 : app_list::AppListItem(extension->id()), 61 : app_list::AppListItem(extension->id()),
70 extension_(extension), 62 extension_(extension),
71 browser_context_(browser_context), 63 browser_context_(browser_context),
72 icon_image_(browser_context_, 64 icon_image_(browser_context_,
73 extension.get(), 65 extension.get(),
74 extensions::IconsInfo::GetIcons(extension.get()), 66 extensions::IconsInfo::GetIcons(extension.get()),
75 extension_misc::EXTENSION_ICON_MEDIUM, 67 extension_misc::EXTENSION_ICON_MEDIUM,
76 // TODO(mukai): better default icon 68 // TODO(mukai): better default icon
77 CreateFlatColorImage(SK_ColorBLACK), 69 CreateFlatColorImage(SK_ColorBLACK),
78 NULL) { 70 NULL) {
79 icon_image_.image_skia().EnsureRepsForSupportedScales(); 71 icon_image_.image_skia().EnsureRepsForSupportedScales();
80 SetIcon(icon_image_.image_skia(), false); 72 SetIcon(icon_image_.image_skia(), false);
81 SetName(extension->name()); 73 SetName(extension->name());
82 } 74 }
83 75
84 private: 76 private:
85 // Overridden from app_list::AppListItem: 77 // Overridden from app_list::AppListItem:
86 virtual void Activate(int event_flags) OVERRIDE { 78 virtual void Activate(int event_flags) OVERRIDE {
87 // TODO(mukai): Pass |extension_| when the extension system supports 79 ExtensionsDelegate::Get(browser_context_)->LaunchApp(extension_->id());
88 // multiple extensions.
89 GetShellExtensionSystem(browser_context_)->LaunchApp();
90 } 80 }
91 81
92 scoped_refptr<extensions::Extension> extension_; 82 scoped_refptr<const extensions::Extension> extension_;
93 content::BrowserContext* browser_context_; 83 content::BrowserContext* browser_context_;
94 extensions::IconImage icon_image_; 84 extensions::IconImage icon_image_;
95 85
96 DISALLOW_COPY_AND_ASSIGN(AppItem); 86 DISALLOW_COPY_AND_ASSIGN(AppItem);
97 }; 87 };
98 88
99 } // namespace 89 } // namespace
100 90
101 ContentAppModelBuilder::ContentAppModelBuilder( 91 ContentAppModelBuilder::ContentAppModelBuilder(
102 content::BrowserContext* browser_context) 92 content::BrowserContext* browser_context)
103 : browser_context_(browser_context) { 93 : browser_context_(browser_context) {
104 } 94 }
105 95
106 ContentAppModelBuilder::~ContentAppModelBuilder() { 96 ContentAppModelBuilder::~ContentAppModelBuilder() {
107 } 97 }
108 98
109 void ContentAppModelBuilder::PopulateApps(app_list::AppListModel* model) { 99 void ContentAppModelBuilder::PopulateApps(app_list::AppListModel* model) {
110 ShellExtensionSystem* extension_system = 100 ExtensionsDelegate* bridge = ExtensionsDelegate::Get(browser_context_);
111 GetShellExtensionSystem(browser_context_); 101 const extensions::ExtensionSet& extensions = bridge->GetInstalledExtensions();
112 if (extension_system && extension_system->extension()) { 102 for (extensions::ExtensionSet::const_iterator iter = extensions.begin();
103 iter != extensions.end();
104 ++iter) {
113 model->AddItem(scoped_ptr<app_list::AppListItem>( 105 model->AddItem(scoped_ptr<app_list::AppListItem>(
114 new AppItem(extension_system->extension(), browser_context_))); 106 new AppItem(*iter, browser_context_)));
115 } 107 }
116 108
117 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem( 109 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem(
118 "mail", GURL("http://gmail.com/"), SK_ColorRED, browser_context_))); 110 "mail", GURL("http://gmail.com/"), SK_ColorRED, browser_context_)));
119 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem( 111 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem(
120 "calendar", GURL("https://calendar.google.com/"), 112 "calendar", GURL("https://calendar.google.com/"),
121 SK_ColorBLUE, browser_context_))); 113 SK_ColorBLUE, browser_context_)));
122 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem( 114 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem(
123 "video", GURL("http://youtube.com/"), SK_ColorGREEN, browser_context_))); 115 "video", GURL("http://youtube.com/"), SK_ColorGREEN, browser_context_)));
124 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem( 116 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem(
125 "music", GURL("http://play.google.com/music"), 117 "music", GURL("http://play.google.com/music"),
126 SK_ColorYELLOW, browser_context_))); 118 SK_ColorYELLOW, browser_context_)));
127 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem( 119 model->AddItem(scoped_ptr<app_list::AppListItem>(new DummyItem(
128 "contact", GURL("https://www.google.com/contacts"), 120 "contact", GURL("https://www.google.com/contacts"),
129 SK_ColorCYAN, browser_context_))); 121 SK_ColorCYAN, browser_context_)));
130 } 122 }
131 123
132 } // namespace athena 124 } // namespace athena
OLDNEW
« no previous file with comments | « athena/content/app_activity_unittest.cc ('k') | athena/extensions/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698