| Index: extensions/browser/api/media_perception_private/media_perception_api_manager.h
|
| diff --git a/extensions/browser/api/media_perception_private/media_perception_api_manager.h b/extensions/browser/api/media_perception_private/media_perception_api_manager.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bd2011eec62e866c613cc25d40b71104909d4d81
|
| --- /dev/null
|
| +++ b/extensions/browser/api/media_perception_private/media_perception_api_manager.h
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef EXTENSIONS_BROWSER_API_MEDIA_PERCEPTION_PRIVATE_MEDIA_PERCEPTION_API_MANAGER_H_
|
| +#define EXTENSIONS_BROWSER_API_MEDIA_PERCEPTION_PRIVATE_MEDIA_PERCEPTION_API_MANAGER_H_
|
| +
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "chromeos/media_perception/media_perception.pb.h"
|
| +#include "extensions/browser/browser_context_keyed_api_factory.h"
|
| +#include "extensions/common/api/media_perception_private.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +class MediaPerceptionAPIManager : public BrowserContextKeyedAPI {
|
| + public:
|
| + explicit MediaPerceptionAPIManager(content::BrowserContext* context);
|
| + ~MediaPerceptionAPIManager() override;
|
| +
|
| + enum class CallbackStatus {
|
| + // Request to media analytics process was successful.
|
| + SUCCESS,
|
| + // Request to media analytics process failed at D-Bus layer.
|
| + DBUS_ERROR,
|
| + // The media analytics process is not running.
|
| + PROCESS_IDLE_ERROR,
|
| + // The media analytics process has been launched via Upstart, but waiting
|
| + // for callback to confirm.
|
| + PROCESS_LAUNCHING_ERROR
|
| + };
|
| +
|
| + // Convenience method to get the MediaPeceptionAPIManager for a
|
| + // BrowserContext.
|
| + static MediaPerceptionAPIManager* Get(content::BrowserContext* context);
|
| +
|
| + // BrowserContextKeyedAPI implementation.
|
| + static BrowserContextKeyedAPIFactory<MediaPerceptionAPIManager>*
|
| + GetFactoryInstance();
|
| +
|
| + // Public functions for MediaPerceptionPrivateAPI implementation.
|
| + using APIStateCallback = base::Callback<void(
|
| + CallbackStatus status,
|
| + extensions::api::media_perception_private::State state)>;
|
| + void GetState(const APIStateCallback& callback);
|
| + void SetState(const extensions::api::media_perception_private::State& state,
|
| + const APIStateCallback& callback);
|
| +
|
| + using APIGetDiagnosticsCallback = base::Callback<void(
|
| + CallbackStatus status,
|
| + extensions::api::media_perception_private::Diagnostics diagnostics)>;
|
| + void GetDiagnostics(const APIGetDiagnosticsCallback& callback);
|
| +
|
| + private:
|
| + friend class BrowserContextKeyedAPIFactory<MediaPerceptionAPIManager>;
|
| +
|
| + // BrowserContextKeyedAPI:
|
| + static const char* service_name() { return "MediaPerceptionAPIManager"; }
|
| +
|
| + enum class AnalyticsProcessState {
|
| + // The process is not running.
|
| + IDLE,
|
| + // The process has been launched via Upstart, but waiting for callback to
|
| + // confirm.
|
| + LAUNCHING,
|
| + // The process is running.
|
| + RUNNING
|
| + };
|
| +
|
| + // Sets the state of the analytics process.
|
| + void SetStateInternal(const APIStateCallback& callback,
|
| + const mri::State& state);
|
| +
|
| + // Event handler for MediaPerception proto messages coming over D-Bus as
|
| + // signal.
|
| + void MediaPerceptionSignalHandler(
|
| + const mri::MediaPerception& media_perception);
|
| +
|
| + // Callback for State D-Bus method calls to the media analytics process.
|
| + void StateCallback(const APIStateCallback& callback,
|
| + bool succeeded,
|
| + const mri::State& state);
|
| +
|
| + // Callback for GetDiagnostics D-Bus method calls to the media analytics
|
| + // process.
|
| + void GetDiagnosticsCallback(const APIGetDiagnosticsCallback& callback,
|
| + bool succeeded,
|
| + const mri::Diagnostics& diagnostics);
|
| +
|
| + // Callback for Upstart command to start media analytics process.
|
| + void UpstartCallback(const APIStateCallback& callback,
|
| + const mri::State& state,
|
| + bool succeeded);
|
| +
|
| + content::BrowserContext* const browser_context_;
|
| +
|
| + // Keeps track of whether the analytics process is running so that it can be
|
| + // started with an Upstart D-Bus method call if necessary.
|
| + AnalyticsProcessState analytics_process_state_;
|
| +
|
| + base::WeakPtrFactory<MediaPerceptionAPIManager> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MediaPerceptionAPIManager);
|
| +};
|
| +
|
| +} // namespace extensions
|
| +
|
| +#endif // EXTENSIONS_BROWSER_API_MEDIA_PERCEPTION_PRIVATE_MEDIA_PERCEPTION_API_MANAGER_H_
|
|
|