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

Unified Diff: chrome/browser/extensions/api/networking_private/networking_private_process_client.h

Issue 22295002: Base infrastructure for Networking Private API on Windows and Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync up to r225168 Created 7 years, 3 months 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: 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..fbee5a3143cff3e6145f96d2ffcbbe24742b81f6
--- /dev/null
+++ b/chrome/browser/extensions/api/networking_private/networking_private_process_client.h
@@ -0,0 +1,158 @@
+// Copyright (c) 2012 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;
+
+// This class is the client for the out-of-process networkingPrivate handler.
+class NetworkingPrivateProcessClient
+ : public content::UtilityProcessHostClient {
+ public:
+ explicit NetworkingPrivateProcessClient(Profile* profile);
+
+ // 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;
+
+ // 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);
+
+ // Switches Utility Process to use WiFiServiceMock for browser_tests.
+ void UseWiFiServiceMock(const base::DictionaryValue& parameters);
+ // Checks whether WiFiServiceMock is used in unit test to provide expected
+ // hardcoded data.
+ bool using_wifi_service_mock() { return using_wifi_service_mock_; }
+
+ // Gets a NetworkingPrivateProcessClient instances, creating one if it
+ // doesn't exist.
+ static scoped_refptr<NetworkingPrivateProcessClient>
+ GetProcessClientForProfile(Profile* profile);
+
+ // Shuts down Utility Process.
+ void ShutdownProcessClient();
+
+ private:
+ // 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(int message_id,
+ const std::string& error_code,
+ const base::DictionaryValue& error_data);
+ void OnGetPropertiesSucceeded(int message_id,
+ const std::string& network_guid,
+ const base::DictionaryValue& properties);
+ void OnGetVisibleNetworksSucceeded(int 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(int message_id,
+ const std::string& network_guid);
+ void OnStartConnectSucceeded(int message_id, const std::string& network_guid);
+ void OnStartDisconnectSucceeded(int 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);
+
+ // Callbacks to run when reply message is received from UtilityProcess.
+ 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;
+ };
+
+ // Callbacks to run when message is received from UtilityProcess.
+ IDMap<MessageCallbacks, IDMapOwnPointer> callbacks_map_;
+
+ // 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_;
+
+ // True if utility process is using WiFiServiceMock.
+ bool using_wifi_service_mock_;
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateProcessClient);
+};
+
+#endif // CHROME_BROWSER_EXTENSIONS_API_NETWORKING_PRIVATE_NETWORKING_PRIVATE_PROCESS_CLIENT_H_

Powered by Google App Engine
This is Rietveld 408576698