18ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved.
28ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org// Use of this source code is governed by a BSD-style license that can be
38ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org// found in the LICENSE file.
48ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
58ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "chrome/browser/ui/ash/launcher/launcher_item_controller.h"
68ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
78ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "base/basictypes.h"
88ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "base/strings/utf_string_conversions.h"
98ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "chrome/browser/profiles/profile.h"
108ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
118ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "extensions/browser/extension_registry.h"
128ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org#include "extensions/common/extension.h"
138ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
148ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.orgLauncherItemController::LauncherItemController(
158ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    Type type,
168ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    const std::string& app_id,
178ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    ChromeLauncherController* launcher_controller)
188ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    : type_(type),
198ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      app_id_(app_id),
208ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      shelf_id_(0),
218ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      launcher_controller_(launcher_controller),
228ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      locked_(0),
238ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      image_set_by_controller_(false) {
248ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org}
258ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
268ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.orgLauncherItemController::~LauncherItemController() {
278ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org}
288ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
298ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.orgconst std::string& LauncherItemController::app_id() const {
308ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  return app_id_;
318ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org}
328ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
338ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.orgbase::string16 LauncherItemController::GetAppTitle() const {
348ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  base::string16 title;
358ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  if (app_id_.empty())
368ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    return title;
378ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
388ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  const extensions::Extension* extension =
398ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      extensions::ExtensionRegistry::Get(
408ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org          launcher_controller_->profile())->GetExtensionById(
418ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org              app_id_, extensions::ExtensionRegistry::EVERYTHING);
428ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  if (extension)
438ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    title = base::UTF8ToUTF16(extension->name());
448ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  return title;
458ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org}
468ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org
478ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.orgash::ShelfItemType LauncherItemController::GetShelfItemType() const {
488ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  switch (type_) {
498ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    case LauncherItemController::TYPE_SHORTCUT:
508ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    case LauncherItemController::TYPE_WINDOWED_APP:
518ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      return ash::TYPE_APP_SHORTCUT;
528ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    case LauncherItemController::TYPE_APP:
538ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      return ash::TYPE_PLATFORM_APP;
548ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org    case LauncherItemController::TYPE_APP_PANEL:
558ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org      return ash::TYPE_APP_PANEL;
568ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  }
578ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  NOTREACHED();
588ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org  return ash::TYPE_APP_SHORTCUT;
598ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org}
608ccb0be15fd0cd7e7804e90fa1ebf302cb7fa44bkasperl@chromium.org