Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ | 5 #ifndef COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ |
| 6 #define COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ | 6 #define COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ |
| 7 | 7 |
| 8 #include <iosfwd> | 8 #include <iosfwd> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/files/scoped_file.h" | |
| 13 #include "base/macros.h" | 12 #include "base/macros.h" |
| 14 #include "base/observer_list.h" | 13 #include "base/observer_list.h" |
| 15 #include "base/values.h" | |
| 16 #include "components/arc/arc_session_observer.h" | 14 #include "components/arc/arc_session_observer.h" |
| 17 #include "components/arc/instance_holder.h" | 15 #include "components/arc/instance_holder.h" |
| 18 | 16 |
| 19 namespace base { | 17 namespace base { |
| 20 class CommandLine; | 18 class CommandLine; |
| 21 } // namespace base | 19 } // namespace base |
| 22 | 20 |
| 23 namespace arc { | 21 namespace arc { |
| 24 namespace mojom { | 22 namespace mojom { |
| 25 | 23 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 124 InstanceHolder<mojom::PrintInstance>* print() { return &print_; } | 122 InstanceHolder<mojom::PrintInstance>* print() { return &print_; } |
| 125 InstanceHolder<mojom::ProcessInstance>* process() { return &process_; } | 123 InstanceHolder<mojom::ProcessInstance>* process() { return &process_; } |
| 126 InstanceHolder<mojom::StorageManagerInstance>* storage_manager() { | 124 InstanceHolder<mojom::StorageManagerInstance>* storage_manager() { |
| 127 return &storage_manager_; | 125 return &storage_manager_; |
| 128 } | 126 } |
| 129 InstanceHolder<mojom::TtsInstance>* tts() { return &tts_; } | 127 InstanceHolder<mojom::TtsInstance>* tts() { return &tts_; } |
| 130 InstanceHolder<mojom::VideoInstance>* video() { return &video_; } | 128 InstanceHolder<mojom::VideoInstance>* video() { return &video_; } |
| 131 InstanceHolder<mojom::WallpaperInstance>* wallpaper() { return &wallpaper_; } | 129 InstanceHolder<mojom::WallpaperInstance>* wallpaper() { return &wallpaper_; } |
| 132 | 130 |
| 133 // Gets if ARC is currently running. | 131 // Gets if ARC is currently running. |
| 134 bool ready() const { return state() == State::READY; } | 132 bool ready() const { return state() == State::RUNNING; } |
| 135 | 133 |
| 136 // Gets if ARC is currently stopped. This is not exactly !ready() since there | 134 // Gets if ARC is currently stopped. This is not exactly !ready() since there |
| 137 // are transient states between ready() and stopped(). | 135 // are transient states between ready() and stopped(). |
| 138 bool stopped() const { return state() == State::STOPPED; } | 136 bool stopped() const { return state() == State::STOPPED; } |
| 139 | 137 |
| 140 protected: | 138 protected: |
| 141 // The possible states of the bridge. In the normal flow, the state changes | 139 // The possible states of the bridge. In the normal flow, the state changes |
| 142 // in the following sequence: | 140 // in the following sequence: |
| 143 // | 141 // |
| 144 // STOPPED | 142 // STOPPED |
| 145 // PrerequisitesChanged() -> | 143 // RequestStart() -> |
| 146 // CONNECTING | 144 // STARTING |
| 147 // OnConnectionEstablished() -> | 145 // OnSessionReady() -> |
| 148 // READY | 146 // READY |
| 149 // | 147 // |
| 150 // The ArcSession state machine can be thought of being substates of | 148 // The ArcSession state machine can be thought of being substates of |
| 151 // ArcBridgeService's CONNECTING state. | 149 // ArcBridgeService's STARTING state. |
| 150 // ArcBridgeService's state machien can be stopped at any phase. | |
|
Luis Héctor Chávez
2016/12/16 23:20:12
nit: s/machien/machine/
hidehiko
2016/12/19 08:05:11
Done.
| |
| 152 // | 151 // |
| 153 // * | 152 // * |
| 154 // StopInstance() -> | 153 // RequestStop() -> |
| 155 // STOPPING | 154 // STOPPING |
| 156 // OnStopped() -> | 155 // OnSessionStopped() -> |
| 157 // STOPPED | 156 // STOPPED |
| 158 enum class State { | 157 enum class State { |
| 159 // ARC is not currently running. | 158 // ARC instance is not currently running. |
| 160 STOPPED, | 159 STOPPED, |
| 161 | 160 |
| 162 // The request to connect has been sent. | 161 // Request to start ARC instance is received. Startin an ARC instance. |
|
Luis Héctor Chávez
2016/12/16 23:20:12
nit: s/Startin/Starting/
hidehiko
2016/12/19 08:05:11
Done.
| |
| 163 CONNECTING, | 162 STARTING, |
| 164 | 163 |
| 165 // The instance has started, and the bridge is fully established. | 164 // ARC instance has finished initializing, and is now ready for interaction |
| 166 CONNECTED, | 165 // with other services. |
| 166 RUNNING, | |
| 167 | 167 |
| 168 // The ARC instance has finished initializing and is now ready for user | 168 // Request to stop ARC instance is recieved. Stopping the ARC instance. |
| 169 // interaction. | |
| 170 READY, | |
| 171 | |
| 172 // The ARC instance has started shutting down. | |
| 173 STOPPING, | 169 STOPPING, |
| 174 }; | 170 }; |
| 175 | 171 |
| 176 // Instance holders. | 172 // Instance holders. |
| 177 InstanceHolder<mojom::AppInstance> app_; | 173 InstanceHolder<mojom::AppInstance> app_; |
| 178 InstanceHolder<mojom::AudioInstance> audio_; | 174 InstanceHolder<mojom::AudioInstance> audio_; |
| 179 InstanceHolder<mojom::AuthInstance> auth_; | 175 InstanceHolder<mojom::AuthInstance> auth_; |
| 180 InstanceHolder<mojom::BluetoothInstance> bluetooth_; | 176 InstanceHolder<mojom::BluetoothInstance> bluetooth_; |
| 181 InstanceHolder<mojom::BootPhaseMonitorInstance> boot_phase_monitor_; | 177 InstanceHolder<mojom::BootPhaseMonitorInstance> boot_phase_monitor_; |
| 182 InstanceHolder<mojom::ClipboardInstance> clipboard_; | 178 InstanceHolder<mojom::ClipboardInstance> clipboard_; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 | 225 |
| 230 // WeakPtrFactory to use callbacks. | 226 // WeakPtrFactory to use callbacks. |
| 231 base::WeakPtrFactory<ArcBridgeService> weak_factory_; | 227 base::WeakPtrFactory<ArcBridgeService> weak_factory_; |
| 232 | 228 |
| 233 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService); | 229 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService); |
| 234 }; | 230 }; |
| 235 | 231 |
| 236 } // namespace arc | 232 } // namespace arc |
| 237 | 233 |
| 238 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ | 234 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ |
| OLD | NEW |