Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: components/arc/arc_bridge_service.h

Issue 1523643002: arc-bridge: Move most methods to Mojo interfaces (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Fixed GN build Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698