| Index: chrome/browser/extensions/api/networking_private/networking_private_process_client.h
|
| diff --git a/chrome/browser/extensions/api/networking_private/networking_private_process_client.h b/chrome/browser/extensions/api/networking_private/networking_private_process_client.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..754bd3906a871e6497c4afcb5eab0b71441859a9
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/api/networking_private/networking_private_process_client.h
|
| @@ -0,0 +1,193 @@
|
| +// Copyright 2013 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 CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_PROCESS_CLIENT_H_
|
| +#define CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_PROCESS_CLIENT_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/compiler_specific.h"
|
| +#include "base/id_map.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/strings/string16.h"
|
| +#include "base/supports_user_data.h"
|
| +#include "base/values.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/utility_process_host.h"
|
| +#include "content/public/browser/utility_process_host_client.h"
|
| +
|
| +class Profile;
|
| +
|
| +namespace extensions {
|
| +
|
| +namespace api {
|
| +namespace networking_private {
|
| +struct VerificationProperties;
|
| +} // namespace networking_private
|
| +} // namespace api
|
| +
|
| +// This class is the client for the out-of-process networkingPrivate handler.
|
| +class NetworkingPrivateProcessClient
|
| + : public content::UtilityProcessHostClient {
|
| + public:
|
| + // An error callback used by both the configuration handler and the state
|
| + // handler to receive error results from the API.
|
| + typedef base::Callback<
|
| + void(const std::string& error_name,
|
| + scoped_ptr<base::DictionaryValue> error_data)> ErrorCallback;
|
| +
|
| + // Callback used to return Dictionary of network properties.
|
| + typedef base::Callback<
|
| + void(const std::string& network_guid,
|
| + const base::DictionaryValue& dictionary)> DictionaryResultCallback;
|
| +
|
| + // Callback used to return List of visibile networks.
|
| + typedef base::Callback<
|
| + void(const base::ListValue& network_list)> ListResultCallback;
|
| +
|
| + // Callback used to notify API function of completed API call without data.
|
| + typedef base::Callback<void()> VoidResultCallback;
|
| +
|
| + explicit NetworkingPrivateProcessClient(Profile* profile);
|
| +
|
| + // Gets the properties of the network with id |service_path|. See note on
|
| + // |callback| and |error_callback|, in class description above.
|
| + void GetProperties(const std::string& service_path,
|
| + const DictionaryResultCallback& callback,
|
| + const ErrorCallback& error_callback);
|
| +
|
| + // Start connect to the network with id |service_path|. See note on
|
| + // |callback| and |error_callback|, in class description above.
|
| + void StartConnect(const std::string& service_path,
|
| + const VoidResultCallback& callback,
|
| + const ErrorCallback& error_callback);
|
| +
|
| + // Start disconnect from the network with id |service_path|. See note on
|
| + // |callback| and |error_callback|, in class description above.
|
| + void StartDisconnect(const std::string& service_path,
|
| + const VoidResultCallback& callback,
|
| + const ErrorCallback& error_callback);
|
| +
|
| + // Sets the |properties| of the network with id |service_path|. See note on
|
| + // |callback| and |error_callback|, in class description above.
|
| + void SetProperties(const std::string& service_path,
|
| + const base::DictionaryValue& properties,
|
| + const VoidResultCallback& callback,
|
| + const ErrorCallback& error_callback);
|
| +
|
| + // Requests network scan. Broadcasts NetworkListChangedEvent upon completion.
|
| + void RequestNetworkScan();
|
| +
|
| + // Gets the list of visible networks and calls |callback|.
|
| + void GetVisibleNetworks(const ListResultCallback& callback);
|
| +
|
| + bool VerifyDestination(
|
| + const api::networking_private::VerificationProperties& properties);
|
| +
|
| + bool VerifyAndEncryptData(
|
| + const api::networking_private::VerificationProperties& properties,
|
| + const std::string& plain_data,
|
| + std::string* encoded_data);
|
| +
|
| + // Switches Utility Process to use WiFiServiceMock for browser_tests.
|
| + void UseWiFiServiceMock(const base::DictionaryValue& parameters);
|
| +
|
| + // Gets a NetworkingPrivateProcessClient instances, creating one if it
|
| + // doesn't exist.
|
| + static scoped_refptr<NetworkingPrivateProcessClient>
|
| + GetProcessClientForProfile(Profile* profile);
|
| +
|
| + // Marks whether or not there are listeners to network events. If there are
|
| + // not, then process can be shut down when there are no more calls
|
| + // pending return.
|
| + void HaveEventsListeners(bool have_events_listeners);
|
| +
|
| + // Shuts down utility process if there are no more events listeners and
|
| + // all calls are completed.
|
| + void ShutdownIfDone();
|
| +
|
| + class CryptoVerify;
|
| +
|
| + private:
|
| + // Callbacks to run when reply message is received from UtilityProcess.
|
| + typedef int32 MessageCallbacksID;
|
| + struct MessageCallbacks {
|
| + MessageCallbacks();
|
| + ~MessageCallbacks();
|
| +
|
| + DictionaryResultCallback get_properties_callback;
|
| + VoidResultCallback start_connect_callback;
|
| + VoidResultCallback start_disconnect_callback;
|
| + VoidResultCallback set_properties_callback;
|
| + ListResultCallback get_visible_networks_callback;
|
| + ErrorCallback error_callback;
|
| +
|
| + MessageCallbacksID id;
|
| + scoped_refptr<NetworkingPrivateProcessClient> process_client;
|
| + };
|
| + typedef IDMap<MessageCallbacks, IDMapOwnPointer> MessageCallbacksMap;
|
| +
|
| + // Launches the task to start the external process.
|
| + void Start();
|
| +
|
| + // UtilityProcessHostClient implementation:
|
| + virtual void OnProcessCrashed(int exit_code) OVERRIDE;
|
| + virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| +
|
| + // Message handlers
|
| + void OnApiError(MessageCallbacksID message_id,
|
| + const std::string& error_code,
|
| + const base::DictionaryValue& error_data);
|
| + void OnGetPropertiesSucceeded(MessageCallbacksID message_id,
|
| + const std::string& network_guid,
|
| + const base::DictionaryValue& properties);
|
| + void OnGetVisibleNetworksSucceeded(MessageCallbacksID message_id,
|
| + const base::ListValue& network_list);
|
| + void OnNetworksChangedEvent(const std::vector<std::string>& network_guids);
|
| + void OnNetworkListChangedEvent(const std::vector<std::string>& network_guids);
|
| + void OnSetPropertiesSucceeded(MessageCallbacksID message_id,
|
| + const std::string& network_guid);
|
| + void OnStartConnectSucceeded(MessageCallbacksID message_id,
|
| + const std::string& network_guid);
|
| + void OnStartDisconnectSucceeded(MessageCallbacksID message_id,
|
| + const std::string& network_guid);
|
| +
|
| + virtual ~NetworkingPrivateProcessClient();
|
| +
|
| + // Creates a new UtilityProcessHost, which launches the utility process.
|
| + void StartProcessOnIOThread(content::BrowserThread::ID thread_id);
|
| + // Deletes a UtilityProcessHost, which stops the utility process.
|
| + void ShutdownProcessOnIOThread();
|
| +
|
| + // Sends message to UtilityProcess.
|
| + void Send(IPC::Message* message);
|
| + void SendOnIOThread(IPC::Message* message);
|
| +
|
| + // Add new |MessageCallbacks| to |callbacks_map_|.
|
| + MessageCallbacks* AddMessageCallbacks();
|
| +
|
| + // Callbacks to run when message is received from UtilityProcess.
|
| + MessageCallbacksMap callbacks_map_;
|
| +
|
| + // True if there are events listeners.
|
| + bool have_events_listeners_;
|
| +
|
| + // Browser profile, which is running API listening for events.
|
| + Profile* profile_;
|
| +
|
| + // Handles sending messages to the external process. Deletes itself when
|
| + // the external process dies.
|
| + base::WeakPtr<content::UtilityProcessHost> utility_process_host_;
|
| +
|
| + // Interface for Verify* methods.
|
| + scoped_ptr<CryptoVerify> crypto_verify_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateProcessClient);
|
| +};
|
| +
|
| +} // namespace extensions
|
| +
|
| +#endif // CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_PROCESS_CLIENT_H_
|
|
|