Chromium Code Reviews| Index: components/arc/arc_bridge_service.h |
| diff --git a/components/arc/arc_bridge_service.h b/components/arc/arc_bridge_service.h |
| index 98902e60e0424b5c197c93c8d4709f9a7217976f..4ffadc5930b2587e86bd658ea54161a8c5cba1a1 100644 |
| --- a/components/arc/arc_bridge_service.h |
| +++ b/components/arc/arc_bridge_service.h |
| @@ -35,8 +35,6 @@ class ArcBridgeService { |
| // PrerequisitesChanged() -> |
| // CONNECTING |
| // OnConnectionEstablished() -> |
| - // CONNECTED |
| - // OnInstanceBootPhase(INSTANCE_BOOT_PHASE_BRIDGE_READY) -> |
| // READY |
| // |
| // The ArcBridgeBootstrap state machine can be thought of being substates of |
| @@ -71,61 +69,26 @@ class ArcBridgeService { |
| // Called whenever the state of the bridge has changed. |
| virtual void OnStateChanged(State state) {} |
| - // Called when the instance has reached a boot phase |
| - virtual void OnInstanceBootPhase(InstanceBootPhase phase) {} |
| - |
| // Called whenever ARC's availability has changed for this system. |
| virtual void OnAvailableChanged(bool available) {} |
| - protected: |
| - virtual ~Observer() {} |
| - }; |
| - |
| - class NotificationObserver { |
| - public: |
| - // Called whenever a notification has been posted on Android side. This |
| - // event is used for both creation and update. |
| - virtual void OnNotificationPostedFromAndroid( |
| - const ArcNotificationData& data) {} |
| - // Called whenever a notification has been removed on Android side. |
| - virtual void OnNotificationRemovedFromAndroid(const std::string& key) {} |
| - |
| - protected: |
| - virtual ~NotificationObserver() {} |
| - }; |
| + // Called whenever the ARC app list is ready. |
| + virtual void OnAppInstanceReady() {} |
| - // Notifies ARC apps related events. |
| - class AppObserver { |
| - public: |
| - // Called whenever ARC sends information about available apps. |
| - virtual void OnAppListRefreshed(const std::vector<AppInfo>& apps) {} |
| + // Called whenever the ARC input is ready. |
| + virtual void OnInputInstanceReady() {} |
| - // Called whenever ARC sends app icon data for specific scale factor. |
| - virtual void OnAppIcon(const std::string& package, |
| - const std::string& activity, |
| - ScaleFactor scale_factor, |
| - const std::vector<uint8_t>& icon_png_data) {} |
| + // Called whenever the ARC notification is ready. |
| + virtual void OnNotificationsInstanceReady() {} |
| - protected: |
| - virtual ~AppObserver() {} |
| - }; |
| + // Called whenever the ARC power is ready. |
| + virtual void OnPowerInstanceReady() {} |
| - // Notifies ARC process related events. |
| - class ProcessObserver { |
| - public: |
| - // Called when the latest process list has been received after |
| - // ArcBridgeService::RequestProcessList() was called. |
| - // |
| - // NB: Due to the nature of Linux PID, we can not avoid the race condition |
| - // that the process info is already outdated when the message is received. |
| - // Do not use the process list obtained here for security-sensitive purpose. |
| - // Good news is that Android processes are designed to be ready to be killed |
| - // at any time, so killing a wrong process is not a disaster. |
| - virtual void OnUpdateProcessList( |
| - const std::vector<RunningAppProcessInfo>& processes) {} |
| + // Called whenever the ARC process list is ready. |
| + virtual void OnProcessListInstanceReady() {} |
| protected: |
| - virtual ~ProcessObserver() {} |
| + virtual ~Observer() {} |
| }; |
| virtual ~ArcBridgeService(); |
| @@ -156,18 +119,20 @@ class ArcBridgeService { |
| // class was created on. |
| void AddObserver(Observer* observer); |
| void RemoveObserver(Observer* observer); |
| - void AddNotificationObserver(NotificationObserver* observer); |
| - void RemoveNotificationObserver(NotificationObserver* observer); |
| - // Adds or removes ARC app observers. This can only be called on the thread |
| - // that this class was created on. |
| - void AddAppObserver(AppObserver* observer); |
| - void RemoveAppObserver(AppObserver* observer); |
| - |
| - // Adds or removes ARC process observers. This can only be called on the |
| + // Gets the Mojo interface for all the instance services. This will return |
| + // nullptr if that particular service is not ready yet. Use an Observer if |
| + // you want to be notified when this is ready. This can only be called on the |
| // thread that this class was created on. |
| - void AddProcessObserver(ProcessObserver* observer); |
| - void RemoveProcessObserver(ProcessObserver* observer); |
| + AppInstance* app_instance() { return app_ptr_.get(); } |
| + InputInstance* input_instance() { return input_ptr_.get(); } |
| + NotificationsInstance* notifications_instance() { |
| + return notifications_ptr_.get(); |
| + } |
| + PowerInstance* power_instance() { return power_ptr_.get(); } |
| + ProcessListInstance* process_list_instance() { |
| + return process_list_ptr_.get(); |
| + } |
| // Gets the current state of the bridge service. |
| State state() const { return state_; } |
| @@ -175,36 +140,6 @@ class ArcBridgeService { |
| // Gets if ARC is available in this system. |
| bool available() const { return available_; } |
| - // Requests registration of an input device on the ARC instance. |
| - // TODO(denniskempin): Make this interface more typesafe. |
| - // |name| should be the displayable name of the emulated device (e.g. "Chrome |
| - // OS Keyboard"), |device_type| the name of the device type (e.g. "keyboard") |
| - // and |fd| a file descriptor that emulates the kernel events of the device. |
| - // This can only be called on the thread that this class was created on. |
| - virtual bool RegisterInputDevice(const std::string& name, |
| - const std::string& device_type, |
| - base::ScopedFD fd) = 0; |
| - |
| - // Sends a notification event to Android side. |
| - virtual bool SendNotificationEventToAndroid(const std::string& key, |
| - ArcNotificationEvent event) = 0; |
| - |
| - // Requests to refresh an app list. |
| - virtual bool RefreshAppList() = 0; |
| - |
| - // Requests to launch an app. |
| - virtual bool LaunchApp(const std::string& package, |
| - const std::string& activity) = 0; |
| - |
| - // Requests to load an icon of specific scale_factor. |
| - virtual bool RequestAppIcon(const std::string& package, |
| - const std::string& activity, |
| - ScaleFactor scale_factor) = 0; |
| - |
| - // Requests a list of processes from the ARC instance. |
| - // When the result comes back, Observer::OnUpdateProcessList() is called. |
| - virtual bool RequestProcessList() = 0; |
| - |
| protected: |
| ArcBridgeService(); |
| @@ -216,20 +151,15 @@ class ArcBridgeService { |
| base::ObserverList<Observer>& observer_list() { return observer_list_; } |
| - base::ObserverList<NotificationObserver>& notification_observer_list() { |
| - return notification_observer_list_; |
| - } |
| - |
| - base::ObserverList<AppObserver>& app_observer_list() { |
| - return app_observer_list_; |
| - } |
| - |
| - base::ObserverList<ProcessObserver>& process_observer_list() { |
| - return process_observer_list_; |
| - } |
| - |
| bool CalledOnValidThread(); |
| + // Mojo interfaces. |
|
hidehiko
2015/12/16 18:34:03
Should these be private (in impl), so getters shou
Luis Héctor Chávez
2015/12/16 19:09:49
Actually I made ArcBridgeService implement ArcBrid
|
| + AppInstancePtr app_ptr_; |
| + InputInstancePtr input_ptr_; |
| + NotificationsInstancePtr notifications_ptr_; |
| + PowerInstancePtr power_ptr_; |
| + ProcessListInstancePtr process_list_ptr_; |
| + |
| private: |
| friend class ArcBridgeTest; |
| FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Basic); |
| @@ -237,9 +167,6 @@ class ArcBridgeService { |
| FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, ShutdownMidStartup); |
| base::ObserverList<Observer> observer_list_; |
| - base::ObserverList<NotificationObserver> notification_observer_list_; |
| - base::ObserverList<AppObserver> app_observer_list_; |
| - base::ObserverList<ProcessObserver> process_observer_list_; |
| base::ThreadChecker thread_checker_; |