system_tray_delegate.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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)struct ASH_EXPORT IMEPropertyInfo {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IMEPropertyInfo();
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~IMEPropertyInfo();
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool selected;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key;
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<IMEPropertyInfo> IMEPropertyInfoList;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ASH_EXPORT IMEInfo {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IMEInfo();
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~IMEInfo();
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool selected;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool third_party;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string id;
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 name;
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 medium_name;
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16 short_name;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<IMEInfo> IMEInfoList;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VolumeControlDelegate;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace tray {
84a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass UserAccountsDelegate;
85a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace tray
86a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class ASH_EXPORT SystemTrayDelegate {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~SystemTrayDelegate() {}
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called after SystemTray has been instantiated.
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Initialize() = 0;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Called before SystemTray is destroyed.
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void Shutdown() = 0;
96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if system tray should be visible on startup.
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetTrayVisibilityOnStartup() = 0;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Gets information about the active user.
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual user::LoginStatus GetUserLoginStatus() const = 0;
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows UI for changing user's profile picture.
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ChangeProfilePicture() = 0;
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the domain that manages the device, if it is enterprise-enrolled.
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual const std::string GetEnterpriseDomain() const = 0;
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns notification for enterprise enrolled devices.
110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual const base::string16 GetEnterpriseMessage() const = 0;
111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Returns the display email of the user that manages the current supervised
1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // user.
1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual const std::string GetSupervisedUserManager() const = 0;
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Returns the name of the user that manages the current supervised user.
1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual const base::string16 GetSupervisedUserManagerName() const = 0;
118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Returns the notification for supervised users.
1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual const base::string16 GetSupervisedUserMessage() const = 0;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether a system upgrade is available.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool SystemShouldUpgrade() const = 0;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the desired hour clock type.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::HourClockType GetHourClockType() const = 0;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowSettings() = 0;
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Returns true if settings menu item should appear.
1323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual bool ShouldShowSettings() = 0;
1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to date, timezone etc.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDateSettings() = 0;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Shows the dialog to set system time, date, and timezone.
1385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void ShowSetTimeDialog() = 0;
1395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
14090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows the settings related to network. If |service_path| is not empty,
14190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // show the settings for that network.
14290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ShowNetworkSettings(const std::string& service_path) = 0;
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the settings related to bluetooth.
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowBluetoothSettings() = 0;
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to multiple displays.
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDisplaySettings() = 0;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
150ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Shows the page that lets you disable performance tracing.
151ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual void ShowChromeSlow() = 0;
152ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Returns true if the notification for the display configuration change
154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // should appear.
155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual bool ShouldShowDisplayNotification() = 0;
156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows settings related to input methods.
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowIMESettings() = 0;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows help.
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowHelp() = 0;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Show accessilibity help.
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowAccessibilityHelp() = 0;
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  // Show the settings related to accessilibity.
167b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual void ShowAccessibilitySettings() = 0;
168b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows more information about public account mode.
1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowPublicAccountInfo() = 0;
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Shows information about enterprise enrolled devices.
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ShowEnterpriseInfo() = 0;
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Shows information about supervised users.
1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void ShowSupervisedUserInfo() = 0;
177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Shows login UI to add other users to this session.
179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ShowUserLogin() = 0;
180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Shows the spring charger replacement dialog if necessary.
1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Returns true if the dialog is shown by the call.
1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool ShowSpringChargerReplacementDialog() = 0;
1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // True if the spring charger replacement dialog is visible.
1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool IsSpringChargerReplacementDialogVisible() = 0;
1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // True if user has confirmed using safe spring charger.
1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool HasUserConfirmedSafeSpringCharger() = 0;
1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to shut down the system.
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShutDown() = 0;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to sign out the user.
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SignOut() = 0;
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Attempts to lock the screen.
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestLockScreen() = 0;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
200a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  // Attempts to restart the system for update.
201a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual void RequestRestartForUpdate() = 0;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of available bluetooth devices.
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableBluetoothDevices(BluetoothDeviceList* devices) = 0;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth start discovering devices.
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStartDiscovering() = 0;
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Requests bluetooth stop discovering devices.
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void BluetoothStopDiscovering() = 0;
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Connect to a specific bluetooth device.
213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void ConnectToBluetoothDevice(const std::string& address) = 0;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if bluetooth adapter is discovering bluetooth devices.
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsBluetoothDiscovering() = 0;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the currently selected IME.
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIME(IMEInfo* info) = 0;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of availble IMEs.
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetAvailableIMEList(IMEInfoList* list) = 0;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a list of properties for the currently selected IME.
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCurrentIMEProperties(IMEPropertyInfoList* list) = 0;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Switches to the selected input method.
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SwitchIME(const std::string& ime_id) = 0;
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Activates an IME property.
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ActivateIMEProperty(const std::string& key) = 0;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Shows UI to configure or activate the network specified by |network_id|,
2343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // which may include showing Payment or Portal UI when appropriate.
2354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // |parent_window| is used to parent any configuration UI. If NULL a default
2364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // window will be used.
2374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void ShowNetworkConfigure(const std::string& network_id,
2384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                    gfx::NativeWindow parent_window) = 0;
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Shows UI to enroll the network specified by |network_id| if appropriate
2414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // and returns true, otherwise returns false. |parent_window| is used
242ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // to parent any configuration UI. If NULL a default window will be used.
2434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual bool EnrollNetwork(const std::string& network_id,
2444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             gfx::NativeWindow parent_window) = 0;
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
246a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  // Shows UI to manage bluetooth devices.
247a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual void ManageBluetoothDevices() = 0;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Toggles bluetooth.
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleBluetooth() = 0;
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Shows UI to unlock a mobile sim.
25390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ShowMobileSimDialog() = 0;
25490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
255ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Shows UI to setup a mobile network.
2563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void ShowMobileSetupDialog(const std::string& service_path) = 0;
257ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
2584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Shows UI to connect to an unlisted network of type |type|. On Chrome OS
2594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // |type| corresponds to a Shill network type.
2604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void ShowOtherNetworkDialog(const std::string& type) = 0;
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth capability is available.
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothAvailable() = 0;
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether bluetooth is enabled.
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBluetoothEnabled() = 0;
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
268e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  // Returns whether the delegate has initiated a bluetooth discovery session.
269e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  virtual bool GetBluetoothDiscovering() = 0;
270e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows UI for changing proxy settings.
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ChangeProxySettings() = 0;
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns VolumeControlDelegate.
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual VolumeControlDelegate* GetVolumeControlDelegate() const = 0;
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets VolumeControlDelegate.
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetVolumeControlDelegate(
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<VolumeControlDelegate> delegate) = 0;
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session start time. Returns |false| if the time is not set.
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionStartTime(base::TimeTicks* session_start_time) = 0;
2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Retrieves the session length limit. Returns |false| if no limit is set.
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetSessionLengthLimit(base::TimeDelta* session_length_limit) = 0;
2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Get the system tray menu size in pixels (dependent on the language).
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int GetSystemTrayMenuWidth() = 0;
2895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // The active user has been changed. This will be called when the UI is ready
2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // to be switched to the new user.
2925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Note: This will happen after SessionStateObserver::ActiveUserChanged fires.
2935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void ActiveUserWasChanged() = 0;
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Returns true when the Search key is configured to be treated as Caps Lock.
296a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsSearchKeyMappedToCapsLock() = 0;
297a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
298a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Returns accounts delegate for given user.
299a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual tray::UserAccountsDelegate* GetUserAccountsDelegate(
300a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      const std::string& user_id) = 0;
301a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)};
302a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
306