| Index: athena/content/content_app_model_builder.cc
|
| diff --git a/athena/content/content_app_model_builder.cc b/athena/content/content_app_model_builder.cc
|
| index 56bad7112bcc504630e0dac359365fd887e8bd31..7fcad45e35e42213e44bfe49419dc9c6ada9f891 100644
|
| --- a/athena/content/content_app_model_builder.cc
|
| +++ b/athena/content/content_app_model_builder.cc
|
| @@ -4,17 +4,35 @@
|
|
|
| #include "athena/content/public/content_app_model_builder.h"
|
|
|
| +#include "apps/shell/browser/shell_extension_system.h"
|
| #include "athena/activity/public/activity_factory.h"
|
| #include "athena/activity/public/activity_manager.h"
|
| +#include "extensions/common/extension.h"
|
| #include "ui/app_list/app_list_item.h"
|
| #include "ui/app_list/app_list_model.h"
|
|
|
| +using extensions::ShellExtensionSystem;
|
| +
|
| namespace athena {
|
|
|
| namespace {
|
|
|
| const int kIconSize = 64;
|
|
|
| +ShellExtensionSystem* GetShellExtensionSystem(
|
| + content::BrowserContext* context) {
|
| + return static_cast<ShellExtensionSystem*>(
|
| + extensions::ExtensionSystem::Get(context));
|
| +}
|
| +
|
| +gfx::ImageSkia CreateFlatColorImage(SkColor color) {
|
| + SkBitmap bitmap;
|
| + bitmap.setConfig(SkBitmap::kARGB_8888_Config, kIconSize, kIconSize);
|
| + bitmap.allocPixels();
|
| + bitmap.eraseColor(color);
|
| + return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
|
| +}
|
| +
|
| // Same dummy item.
|
| class DummyItem : public app_list::AppListItem {
|
| public:
|
| @@ -25,11 +43,7 @@ class DummyItem : public app_list::AppListItem {
|
| id_(id),
|
| browser_context_(browser_context) {
|
|
|
| - SkBitmap bitmap;
|
| - bitmap.setConfig(SkBitmap::kARGB_8888_Config, kIconSize, kIconSize);
|
| - bitmap.allocPixels();
|
| - bitmap.eraseColor(color);
|
| - SetIcon(gfx::ImageSkia::CreateFrom1xBitmap(bitmap), false /* has_shadow */);
|
| + SetIcon(CreateFlatColorImage(color), false /* has_shadow */);
|
| SetName(id);
|
| }
|
|
|
| @@ -47,6 +61,32 @@ class DummyItem : public app_list::AppListItem {
|
| DISALLOW_COPY_AND_ASSIGN(DummyItem);
|
| };
|
|
|
| +class AppItem : public app_list::AppListItem {
|
| + public:
|
| + AppItem(scoped_refptr<extensions::Extension> extension,
|
| + content::BrowserContext* browser_context)
|
| + : app_list::AppListItem(extension->id()),
|
| + extension_(extension),
|
| + browser_context_(browser_context) {
|
| + // TODO(mukai): componentize extension_icon_image and use it.
|
| + SetIcon(CreateFlatColorImage(SK_ColorBLACK), false);
|
| + SetName(extension->name());
|
| + }
|
| +
|
| + private:
|
| + // Overridden from app_list::AppListItem:
|
| + virtual void Activate(int event_flags) OVERRIDE {
|
| + // TODO(mukai): Pass |extension_| when the extension system supports
|
| + // multiple extensions.
|
| + GetShellExtensionSystem(browser_context_)->LaunchApp();
|
| + }
|
| +
|
| + scoped_refptr<extensions::Extension> extension_;
|
| + content::BrowserContext* browser_context_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AppItem);
|
| +};
|
| +
|
| } // namespace
|
|
|
| ContentAppModelBuilder::ContentAppModelBuilder(
|
| @@ -68,6 +108,13 @@ void ContentAppModelBuilder::PopulateApps(app_list::AppListModel* model) {
|
| new DummyItem("music", SK_ColorYELLOW, browser_context_)));
|
| model->AddItem(scoped_ptr<app_list::AppListItem>(
|
| new DummyItem("contact", SK_ColorCYAN, browser_context_)));
|
| +
|
| + ShellExtensionSystem* extension_system =
|
| + GetShellExtensionSystem(browser_context_);
|
| + if (extension_system && extension_system->extension()) {
|
| + model->AddItem(scoped_ptr<app_list::AppListItem>(
|
| + new AppItem(extension_system->extension(), browser_context_)));
|
| + }
|
| }
|
|
|
| } // namespace athena
|
|
|