system_tray_delegate.h revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/ash_export.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/user/login_status.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/time_formatting.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h"
18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/gfx/native_widget_types.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base {
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TimeDelta;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TimeTicks;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT NetworkIconInfo {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NetworkIconInfo();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~NetworkIconInfo();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool highlight() const { return connected || connecting; }
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool connecting;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool connected;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool tray_icon_visible;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::ImageSkia image;
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 description;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string service_path;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_cellular;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT BluetoothDeviceInfo {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BluetoothDeviceInfo();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~BluetoothDeviceInfo();
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string address;
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 display_name;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool connected;
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bool connecting;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool paired;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<BluetoothDeviceInfo> BluetoothDeviceList;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Structure that packs progress information of each operation.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT DriveOperationStatus {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum OperationType {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_UPLOAD,
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    OPERATION_DOWNLOAD
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum OperationState {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_NOT_STARTED,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_IN_PROGRESS,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_COMPLETED,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_FAILED,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DriveOperationStatus();
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~DriveOperationStatus();
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Unique ID for the operation.
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int32 id;
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // File path.
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath file_path;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Current operation completion progress [0.0 - 1.0].
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double progress;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OperationType type;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OperationState state;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<DriveOperationStatus> DriveOperationStatusList;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT IMEPropertyInfo {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IMEPropertyInfo();
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~IMEPropertyInfo();
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool selected;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key;
93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<IMEPropertyInfo> IMEPropertyInfoList;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT IMEInfo {
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IMEInfo();
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~IMEInfo();
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool selected;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool third_party;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string id;
105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 medium_name;
107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 short_name;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<IMEInfo> IMEInfoList;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VolumeControlDelegate;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemTrayDelegate {
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~SystemTrayDelegate() {}
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called after SystemTray has been instantiated.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Initialize() = 0;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Called before SystemTray is destroyed.
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void Shutdown() = 0;
123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if system tray should be visible on startup.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetTrayVisibilityOnStartup() = 0;
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Gets information about the active user.
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual user::LoginStatus GetUserLoginStatus() const = 0;
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsOobeCompleted() const = 0;
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows UI for changing user's profile picture.
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ChangeProfilePicture() = 0;
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the domain that manages the device, if it is enterprise-enrolled.
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual const std::string GetEnterpriseDomain() const = 0;
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns notification for enterprise enrolled devices.
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetEnterpriseMessage() const = 0;
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
140ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Returns the display email of user that manages current
141ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // locally managed user.
142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const std::string GetLocallyManagedUserManager() const = 0;
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
144ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Returns the name of user that manages current locally managed user.
145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual const base::string16 GetLocallyManagedUserManagerName() const = 0;
146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Returns notification for locally managed users.
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetLocallyManagedUserMessage() const = 0;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether a system upgrade is available.
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool SystemShouldUpgrade() const = 0;
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the desired hour clock type.
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::HourClockType GetHourClockType() const = 0;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings.
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowSettings() = 0;
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to date, timezone etc.
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDateSettings() = 0;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows the settings related to network. If |service_path| is not empty,
16390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // show the settings for that network.
16490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ShowNetworkSettings(const std::string& service_path) = 0;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to bluetooth.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowBluetoothSettings() = 0;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to multiple displays.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDisplaySettings() = 0;
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
172ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Shows the page that lets you disable performance tracing.
173ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual void ShowChromeSlow() = 0;
174ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Returns true if the notification for the display configuration change
176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // should appear.
177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual bool ShouldShowDisplayNotification() = 0;
178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to Google Drive.
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDriveSettings() = 0;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to input methods.
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowIMESettings() = 0;
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows help.
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowHelp() = 0;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Show accessilibity help.
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowAccessibilityHelp() = 0;
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  // Show the settings related to accessilibity.
192b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual void ShowAccessibilitySettings() = 0;
193b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows more information about public account mode.
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowPublicAccountInfo() = 0;
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows information about enterprise enrolled devices.
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowEnterpriseInfo() = 0;
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows information about locally managed users.
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowLocallyManagedUserInfo() = 0;
202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows login UI to add other users to this session.
204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowUserLogin() = 0;
205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to shut down the system.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShutDown() = 0;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to sign out the user.
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SignOut() = 0;
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to lock the screen.
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestLockScreen() = 0;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  // Attempts to restart the system for update.
216a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual void RequestRestartForUpdate() = 0;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of available bluetooth devices.
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableBluetoothDevices(BluetoothDeviceList* devices) = 0;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth start discovering devices.
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStartDiscovering() = 0;
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth stop discovering devices.
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStopDiscovering() = 0;
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Connect to a specific bluetooth device.
228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ConnectToBluetoothDevice(const std::string& address) = 0;
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if bluetooth adapter is discovering bluetooth devices.
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsBluetoothDiscovering() = 0;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the currently selected IME.
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIME(IMEInfo* info) = 0;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of availble IMEs.
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableIMEList(IMEInfoList* list) = 0;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of properties for the currently selected IME.
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIMEProperties(IMEPropertyInfoList* list) = 0;
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Switches to the selected input method.
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SwitchIME(const std::string& ime_id) = 0;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Activates an IME property.
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ActivateIMEProperty(const std::string& key) = 0;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cancels ongoing drive operation.
249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void CancelDriveOperation(int32 operation_id) = 0;
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns information about the ongoing drive operations.
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetDriveOperationStatusList(
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      DriveOperationStatusList* list) = 0;
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows UI to configure or activate the network specified by |network_id|.
25690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ConfigureNetwork(const std::string& network_id) = 0;
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
258ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Shows UI to enroll the network specified by |network_id| if appropriate,
259ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // otherwise behaves the same as ConfigureNetwork. |parent_window| is used
260ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // to parent any configuration UI. If NULL a default window will be used.
261ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual void EnrollOrConfigureNetwork(const std::string& network_id,
262ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                                        gfx::NativeWindow parent_window) = 0;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
264a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  // Shows UI to manage bluetooth devices.
265a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual void ManageBluetoothDevices() = 0;
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles bluetooth.
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleBluetooth() = 0;
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows UI to unlock a mobile sim.
27190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ShowMobileSimDialog() = 0;
27290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
273ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Shows UI to setup a mobile network.
274ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual void ShowMobileSetup(const std::string& network_id) = 0;
275ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to connect to an unlisted wifi network.
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherWifi() = 0;
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to configure vpn.
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherVPN() = 0;
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to search for cellular networks.
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherCellular() = 0;
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth capability is available.
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothAvailable() = 0;
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth is enabled.
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothEnabled() = 0;
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves information about the carrier and locale specific |setup_url|.
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If none of the carrier info/setup URL cannot be retrieved, returns false.
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Note: |setup_url| is returned when carrier is not defined (no SIM card).
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetCellularCarrierInfo(std::string* carrier_id,
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* topup_url,
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* setup_url) = 0;
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Opens the cellular network specific URL.
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCellularURL(const std::string& url) = 0;
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI for changing proxy settings.
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ChangeProxySettings() = 0;
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns VolumeControlDelegate.
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual VolumeControlDelegate* GetVolumeControlDelegate() const = 0;
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets VolumeControlDelegate.
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetVolumeControlDelegate(
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<VolumeControlDelegate> delegate) = 0;
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session start time. Returns |false| if the time is not set.
3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionStartTime(base::TimeTicks* session_start_time) = 0;
3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session length limit. Returns |false| if no limit is set.
3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionLengthLimit(base::TimeDelta* session_length_limit) = 0;
3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Get the system tray menu size in pixels (dependent on the language).
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int GetSystemTrayMenuWidth() = 0;
3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the duration formatted as a localized string.
3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(stevenjb): Move TimeFormat from src/chrome to src/ui so that it can be
3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // accessed without going through the delegate. crbug.com/222697
323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual base::string16 FormatTimeDuration(
324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::TimeDelta& delta) const = 0;
3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Speaks the given text if spoken feedback is enabled.
3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void MaybeSpeak(const std::string& utterance) const = 0;
3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a dummy delegate for testing.
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static SystemTrayDelegate* CreateDummyDelegate();
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
336