Home | History | Annotate | Download | only in test
      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 "ash/test/test_shelf_delegate.h"
      6 
      7 #include "ash/shelf/shelf_item_delegate_manager.h"
      8 #include "ash/shelf/shelf_model.h"
      9 #include "ash/shelf/shelf_util.h"
     10 #include "ash/shell.h"
     11 #include "ash/test/test_shelf_item_delegate.h"
     12 #include "base/strings/string_util.h"
     13 #include "base/strings/utf_string_conversions.h"
     14 #include "grit/ash_resources.h"
     15 #include "ui/aura/window.h"
     16 
     17 namespace ash {
     18 namespace test {
     19 
     20 TestShelfDelegate* TestShelfDelegate::instance_ = NULL;
     21 
     22 TestShelfDelegate::TestShelfDelegate(ShelfModel* model)
     23     : model_(model) {
     24   CHECK(!instance_);
     25   instance_ = this;
     26 }
     27 
     28 TestShelfDelegate::~TestShelfDelegate() {
     29   instance_ = NULL;
     30 }
     31 
     32 void TestShelfDelegate::AddLauncherItem(aura::Window* window) {
     33   AddLauncherItem(window, STATUS_CLOSED);
     34 }
     35 
     36 void TestShelfDelegate::AddLauncherItem(aura::Window* window,
     37                                         LauncherItemStatus status) {
     38   LauncherItem item;
     39   if (window->type() == aura::client::WINDOW_TYPE_PANEL)
     40     item.type = TYPE_APP_PANEL;
     41   else
     42     item.type = TYPE_PLATFORM_APP;
     43   LauncherID id = model_->next_id();
     44   item.status = status;
     45   model_->Add(item);
     46   window->AddObserver(this);
     47 
     48   ShelfItemDelegateManager* manager =
     49       Shell::GetInstance()->shelf_item_delegate_manager();
     50   // |manager| owns TestShelfItemDelegate.
     51   scoped_ptr<ShelfItemDelegate> delegate(new TestShelfItemDelegate(window));
     52   manager->SetShelfItemDelegate(id, delegate.Pass());
     53   SetLauncherIDForWindow(id, window);
     54 }
     55 
     56 void TestShelfDelegate::RemoveLauncherItemForWindow(aura::Window* window) {
     57   LauncherID id = GetLauncherIDForWindow(window);
     58   if (id == 0)
     59     return;
     60   int index = model_->ItemIndexByID(id);
     61   DCHECK_NE(-1, index);
     62   model_->RemoveItemAt(index);
     63   window->RemoveObserver(this);
     64 }
     65 
     66 void TestShelfDelegate::OnWindowDestroying(aura::Window* window) {
     67   RemoveLauncherItemForWindow(window);
     68 }
     69 
     70 void TestShelfDelegate::OnWindowHierarchyChanging(
     71       const HierarchyChangeParams& params) {
     72   // The window may be legitimately reparented while staying open if it moves
     73   // to another display or container. If the window does not have a new parent
     74   // then remove the launcher item.
     75   if (!params.new_parent)
     76     RemoveLauncherItemForWindow(params.target);
     77 }
     78 
     79 void TestShelfDelegate::OnLauncherCreated(Launcher* launcher) {
     80 }
     81 
     82 void TestShelfDelegate::OnLauncherDestroyed(Launcher* launcher) {
     83 }
     84 
     85 LauncherID TestShelfDelegate::GetLauncherIDForAppID(const std::string& app_id) {
     86   return 0;
     87 }
     88 
     89 const std::string& TestShelfDelegate::GetAppIDForLauncherID(LauncherID id) {
     90   return base::EmptyString();
     91 }
     92 
     93 void TestShelfDelegate::PinAppWithID(const std::string& app_id) {
     94 }
     95 
     96 bool TestShelfDelegate::CanPin() const {
     97   return true;
     98 }
     99 
    100 bool TestShelfDelegate::IsAppPinned(const std::string& app_id) {
    101   return false;
    102 }
    103 
    104 void TestShelfDelegate::UnpinAppWithID(const std::string& app_id) {
    105 }
    106 
    107 }  // namespace test
    108 }  // namespace ash
    109