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#ifndef ASH_SHELF_SHELF_DELEGATE_H_
6#define ASH_SHELF_SHELF_DELEGATE_H_
7
8#include "ash/ash_export.h"
9#include "ash/shelf/shelf_item_types.h"
10
11namespace ash {
12class Shelf;
13
14// Delegate for the Shelf.
15class ASH_EXPORT ShelfDelegate {
16 public:
17  // Shelf owns the delegate.
18  virtual ~ShelfDelegate() {}
19
20  // Callback used to allow delegate to perform initialization actions that
21  // depend on the Shelf being in a known state.
22  virtual void OnShelfCreated(Shelf* shelf) = 0;
23
24  // Callback used to inform the delegate that a specific shelf no longer
25  // exists.
26  virtual void OnShelfDestroyed(Shelf* shelf) = 0;
27
28  // Get the shelf ID from an application ID.
29  virtual ShelfID GetShelfIDForAppID(const std::string& app_id) = 0;
30
31  // Get the application ID for a given shelf ID.
32  virtual const std::string& GetAppIDForShelfID(ShelfID id) = 0;
33
34  // Pins an app with |app_id| to shelf. A running instance will get pinned.
35  // In case there is no running instance a new shelf item is created and
36  // pinned.
37  virtual void PinAppWithID(const std::string& app_id) = 0;
38
39  // Check if the app with |app_id_| is pinned to the shelf.
40  virtual bool IsAppPinned(const std::string& app_id) = 0;
41
42  // Checks whether the user is allowed to pin/unpin apps. Pinning may be
43  // disallowed by policy in case there is a pre-defined set of pinned apps.
44  virtual bool CanPin() const = 0;
45
46  // Unpins app item with |app_id|.
47  virtual void UnpinAppWithID(const std::string& app_id) = 0;
48};
49
50}  // namespace ash
51
52#endif  // ASH_SHELF_SHELF_DELEGATE_H_
53