system_tray_delegate.h revision 868fa2fe829687343ffae624259930155e16dbd8
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"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TimeDelta;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TimeTicks;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT NetworkIconInfo {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NetworkIconInfo();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~NetworkIconInfo();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool highlight() const { return connected || connecting; }
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool connecting;
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool connected;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool tray_icon_visible;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::ImageSkia image;
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 description;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string service_path;
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_cellular;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT BluetoothDeviceInfo {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BluetoothDeviceInfo();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~BluetoothDeviceInfo();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string address;
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 display_name;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool connected;
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bool connecting;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool paired;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<BluetoothDeviceInfo> BluetoothDeviceList;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Structure that packs progress information of each operation.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT DriveOperationStatus {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum OperationType {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_UPLOAD,
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    OPERATION_DOWNLOAD
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum OperationState {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_NOT_STARTED,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_IN_PROGRESS,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_COMPLETED,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OPERATION_FAILED,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DriveOperationStatus();
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~DriveOperationStatus();
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Unique ID for the operation.
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int32 id;
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // File path.
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath file_path;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Current operation completion progress [0.0 - 1.0].
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double progress;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OperationType type;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OperationState state;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<DriveOperationStatus> DriveOperationStatusList;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT IMEPropertyInfo {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IMEPropertyInfo();
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~IMEPropertyInfo();
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool selected;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key;
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<IMEPropertyInfo> IMEPropertyInfoList;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT IMEInfo {
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IMEInfo();
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~IMEInfo();
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool selected;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool third_party;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string id;
104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 medium_name;
106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 short_name;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<IMEInfo> IMEInfoList;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VolumeControlDelegate;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemTrayDelegate {
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~SystemTrayDelegate() {}
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called after SystemTray has been instantiated.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Initialize() = 0;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Called before SystemTray is destroyed.
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void Shutdown() = 0;
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if system tray should be visible on startup.
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetTrayVisibilityOnStartup() = 0;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Gets information about the active user.
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual user::LoginStatus GetUserLoginStatus() const = 0;
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsOobeCompleted() const = 0;
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows UI for changing user's profile picture.
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ChangeProfilePicture() = 0;
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the domain that manages the device, if it is enterprise-enrolled.
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual const std::string GetEnterpriseDomain() const = 0;
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns notification for enterprise enrolled devices.
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetEnterpriseMessage() const = 0;
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Returns the email of user that manages current locally managed user.
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const std::string GetLocallyManagedUserManager() const = 0;
141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Returns notification for locally managed users.
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetLocallyManagedUserMessage() const = 0;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether a system upgrade is available.
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool SystemShouldUpgrade() const = 0;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the desired hour clock type.
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::HourClockType GetHourClockType() const = 0;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings.
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowSettings() = 0;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to date, timezone etc.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDateSettings() = 0;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows the settings related to network. If |service_path| is not empty,
15890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // show the settings for that network.
15990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ShowNetworkSettings(const std::string& service_path) = 0;
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to bluetooth.
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowBluetoothSettings() = 0;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to multiple displays.
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDisplaySettings() = 0;
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to Google Drive.
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDriveSettings() = 0;
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to input methods.
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowIMESettings() = 0;
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows help.
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowHelp() = 0;
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Show accessilibity help.
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowAccessibilityHelp() = 0;
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
179b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  // Show the settings related to accessilibity.
180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual void ShowAccessibilitySettings() = 0;
181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows more information about public account mode.
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowPublicAccountInfo() = 0;
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows information about enterprise enrolled devices.
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowEnterpriseInfo() = 0;
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows information about locally managed users.
189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowLocallyManagedUserInfo() = 0;
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows login UI to add other users to this session.
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowUserLogin() = 0;
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to shut down the system.
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShutDown() = 0;
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to sign out the user.
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SignOut() = 0;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to lock the screen.
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestLockScreen() = 0;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
203a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  // Attempts to restart the system for update.
204a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual void RequestRestartForUpdate() = 0;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of available bluetooth devices.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableBluetoothDevices(BluetoothDeviceList* devices) = 0;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth start discovering devices.
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStartDiscovering() = 0;
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth stop discovering devices.
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStopDiscovering() = 0;
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Connect to a specific bluetooth device.
216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ConnectToBluetoothDevice(const std::string& address) = 0;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if bluetooth adapter is discovering bluetooth devices.
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsBluetoothDiscovering() = 0;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the currently selected IME.
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIME(IMEInfo* info) = 0;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of availble IMEs.
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableIMEList(IMEInfoList* list) = 0;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of properties for the currently selected IME.
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIMEProperties(IMEPropertyInfoList* list) = 0;
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Switches to the selected input method.
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SwitchIME(const std::string& ime_id) = 0;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Activates an IME property.
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ActivateIMEProperty(const std::string& key) = 0;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cancels ongoing drive operation.
237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void CancelDriveOperation(int32 operation_id) = 0;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns information about the ongoing drive operations.
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetDriveOperationStatusList(
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      DriveOperationStatusList* list) = 0;
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows UI to configure or activate the network specified by |network_id|.
24490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ConfigureNetwork(const std::string& network_id) = 0;
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Sends a connect request for the network specified by |network_id|.
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ConnectToNetwork(const std::string& network_id) = 0;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows UI to add a new bluetooth device.
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AddBluetoothDevice() = 0;
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles bluetooth.
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleBluetooth() = 0;
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows UI to unlock a mobile sim.
25690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ShowMobileSimDialog() = 0;
25790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to connect to an unlisted wifi network.
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherWifi() = 0;
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to configure vpn.
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherVPN() = 0;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to search for cellular networks.
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherCellular() = 0;
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth capability is available.
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothAvailable() = 0;
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth is enabled.
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothEnabled() = 0;
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves information about the carrier and locale specific |setup_url|.
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If none of the carrier info/setup URL cannot be retrieved, returns false.
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Note: |setup_url| is returned when carrier is not defined (no SIM card).
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetCellularCarrierInfo(std::string* carrier_id,
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* topup_url,
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* setup_url) = 0;
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Opens the cellular network specific URL.
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCellularURL(const std::string& url) = 0;
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI for changing proxy settings.
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ChangeProxySettings() = 0;
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns VolumeControlDelegate.
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual VolumeControlDelegate* GetVolumeControlDelegate() const = 0;
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets VolumeControlDelegate.
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetVolumeControlDelegate(
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<VolumeControlDelegate> delegate) = 0;
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session start time. Returns |false| if the time is not set.
2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionStartTime(base::TimeTicks* session_start_time) = 0;
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session length limit. Returns |false| if no limit is set.
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionLengthLimit(base::TimeDelta* session_length_limit) = 0;
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Get the system tray menu size in pixels (dependent on the language).
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int GetSystemTrayMenuWidth() = 0;
3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the duration formatted as a localized string.
3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(stevenjb): Move TimeFormat from src/chrome to src/ui so that it can be
3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // accessed without going through the delegate. crbug.com/222697
305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual base::string16 FormatTimeDuration(
306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::TimeDelta& delta) const = 0;
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Speaks the given text if spoken feedback is enabled.
3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void MaybeSpeak(const std::string& utterance) const = 0;
3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a dummy delegate for testing.
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static SystemTrayDelegate* CreateDummyDelegate();
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
318