system_tray_delegate.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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/power/power_supply_status.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/user/login_status.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/time_formatting.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string16.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.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)
114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef std::vector<std::string> UserEmailList;
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemTrayDelegate {
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~SystemTrayDelegate() {}
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called after SystemTray has been instantiated.
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Initialize() = 0;
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Called before SystemTray is destroyed.
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void Shutdown() = 0;
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if system tray should be visible on startup.
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetTrayVisibilityOnStartup() = 0;
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Gets information about the active user.
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetUserDisplayName() const = 0;
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const std::string GetUserEmail() const = 0;
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const gfx::ImageSkia& GetUserImage() const = 0;
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual user::LoginStatus GetUserLoginStatus() const = 0;
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsOobeCompleted() const = 0;
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Returns a list of all logged in users.
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void GetLoggedInUsers(UserEmailList* users) = 0;
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Switches to another active user (if that user has already signed in).
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void SwitchActiveUser(const std::string& email) = 0;
141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows UI for changing user's profile picture.
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ChangeProfilePicture() = 0;
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the domain that manages the device, if it is enterprise-enrolled.
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual const std::string GetEnterpriseDomain() const = 0;
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns notification for enterprise enrolled devices.
149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetEnterpriseMessage() const = 0;
150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Returns the email of user that manages current locally managed user.
152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const std::string GetLocallyManagedUserManager() const = 0;
153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Returns notification for locally managed users.
155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetLocallyManagedUserMessage() const = 0;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether a system upgrade is available.
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool SystemShouldUpgrade() const = 0;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the desired hour clock type.
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::HourClockType GetHourClockType() const = 0;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the current power supply status.
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PowerSupplyStatus GetPowerSupplyStatus() const = 0;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Requests a status update.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestStatusUpdate() const = 0;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowSettings() = 0;
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to date, timezone etc.
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDateSettings() = 0;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to network.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowNetworkSettings() = 0;
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to bluetooth.
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowBluetoothSettings() = 0;
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to multiple displays.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDisplaySettings() = 0;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to Google Drive.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDriveSettings() = 0;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to input methods.
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowIMESettings() = 0;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows help.
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowHelp() = 0;
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Show accessilibity help.
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowAccessibilityHelp() = 0;
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows more information about public account mode.
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowPublicAccountInfo() = 0;
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows information about enterprise enrolled devices.
2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowEnterpriseInfo() = 0;
2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows information about locally managed users.
203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowLocallyManagedUserInfo() = 0;
204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows login UI to add other users to this session.
206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowUserLogin() = 0;
207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to shut down the system.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShutDown() = 0;
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to sign out the user.
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SignOut() = 0;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to lock the screen.
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestLockScreen() = 0;
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to restart the system.
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestRestart() = 0;
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of available bluetooth devices.
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableBluetoothDevices(BluetoothDeviceList* devices) = 0;
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth start discovering devices.
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStartDiscovering() = 0;
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth stop discovering devices.
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStopDiscovering() = 0;
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Connect to a specific bluetooth device.
230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ConnectToBluetoothDevice(const std::string& address) = 0;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if bluetooth adapter is discovering bluetooth devices.
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsBluetoothDiscovering() = 0;
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the currently selected IME.
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIME(IMEInfo* info) = 0;
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of availble IMEs.
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableIMEList(IMEInfoList* list) = 0;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of properties for the currently selected IME.
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIMEProperties(IMEPropertyInfoList* list) = 0;
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Switches to the selected input method.
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SwitchIME(const std::string& ime_id) = 0;
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Activates an IME property.
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ActivateIMEProperty(const std::string& key) = 0;
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cancels ongoing drive operation.
251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void CancelDriveOperation(int32 operation_id) = 0;
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns information about the ongoing drive operations.
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetDriveOperationStatusList(
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      DriveOperationStatusList* list) = 0;
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns information about the most relevant network. Relevance is
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // determined by the implementor (e.g. a connecting network may be more
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // relevant over a connected network etc.)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetMostRelevantNetworkIcon(NetworkIconInfo* info,
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          bool large) = 0;
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetVirtualNetworkIcon(ash::NetworkIconInfo* info) = 0;
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns information about the available networks.
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableNetworks(std::vector<NetworkIconInfo>* list) = 0;
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the information about all virtual networks.
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetVirtualNetworks(std::vector<NetworkIconInfo>* list) = 0;
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Connects to the network specified by the unique id.
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ConnectToNetwork(const std::string& network_id) = 0;
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets the network IP address, and the mac addresses for the ethernet and
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // wifi devices. If any of this is unavailable, empty strings are returned.
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetNetworkAddresses(std::string* ip_address,
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   std::string* ethernet_mac_address,
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   std::string* wifi_mac_address) = 0;
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Requests network scan when list of networks is opened.
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestNetworkScan() = 0;
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shous UI to add a new bluetooth device.
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AddBluetoothDevice() = 0;
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles airplane mode.
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleAirplaneMode() = 0;
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles wifi network.
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleWifi() = 0;
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles mobile network.
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleMobile() = 0;
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles bluetooth.
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleBluetooth() = 0;
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to connect to an unlisted wifi network.
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherWifi() = 0;
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to configure vpn.
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherVPN() = 0;
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI to search for cellular networks.
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowOtherCellular() = 0;
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether the system is connected to any network.
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsNetworkConnected() = 0;
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether wifi is available.
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetWifiAvailable() = 0;
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether mobile networking (cellular or wimax) is available.
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetMobileAvailable() = 0;
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth capability is available.
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothAvailable() = 0;
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether wifi is enabled.
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetWifiEnabled() = 0;
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether mobile (cellular or wimax) networking is enabled.
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetMobileEnabled() = 0;
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth is enabled.
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothEnabled() = 0;
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether mobile scanning is supported.
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetMobileScanSupported() = 0;
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves information about the carrier and locale specific |setup_url|.
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If none of the carrier info/setup URL cannot be retrieved, returns false.
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Note: |setup_url| is returned when carrier is not defined (no SIM card).
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetCellularCarrierInfo(std::string* carrier_id,
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* topup_url,
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      std::string* setup_url) = 0;
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns whether the network manager is scanning for wifi networks.
3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetWifiScanning() = 0;
3402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns whether the network manager is initializing the cellular modem.
3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetCellularInitializing() = 0;
3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Opens the cellular network specific URL.
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCellularURL(const std::string& url) = 0;
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI for changing proxy settings.
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ChangeProxySettings() = 0;
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns VolumeControlDelegate.
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual VolumeControlDelegate* GetVolumeControlDelegate() const = 0;
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets VolumeControlDelegate.
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetVolumeControlDelegate(
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<VolumeControlDelegate> delegate) = 0;
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session start time. Returns |false| if the time is not set.
3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionStartTime(base::TimeTicks* session_start_time) = 0;
3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session length limit. Returns |false| if no limit is set.
3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionLengthLimit(base::TimeDelta* session_length_limit) = 0;
3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Get the system tray menu size in pixels (dependent on the language).
3642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int GetSystemTrayMenuWidth() = 0;
3652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the duration formatted as a localized string.
3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(stevenjb): Move TimeFormat from src/chrome to src/ui so that it can be
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // accessed without going through the delegate. crbug.com/222697
369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual base::string16 FormatTimeDuration(
370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::TimeDelta& delta) const = 0;
3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Speaks the given text if spoken feedback is enabled.
3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void MaybeSpeak(const std::string& utterance) const = 0;
3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a dummy delegate for testing.
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static SystemTrayDelegate* CreateDummyDelegate();
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
382