1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_NETWORK_CONFIG_MESSAGE_HANDLER_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_NETWORK_CONFIG_MESSAGE_HANDLER_H_ 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <string> 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/weak_ptr.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/public/browser/web_ui_message_handler.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace base { 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DictionaryValue; 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ListValue; 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace chromeos { 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// This class provides support for network configuration from WebUI components. 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// It implements network_config.js which is a drop-in replacement for the 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// networkingPrivate extention API. TODO(stevenjb): Implement the remaining 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// networkingPrivate methods as needed. 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class NetworkConfigMessageHandler : public content::WebUIMessageHandler { 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NetworkConfigMessageHandler(); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~NetworkConfigMessageHandler(); 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // WebUIMessageHandler implementation. 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void RegisterMessages() OVERRIDE; 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // WebUI::RegisterMessageCallback callbacks. These callbacks collect the 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // requested information and call the associated JS method. The first 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // argument in |arg_list| is always the callback id which is passed back 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // to the callback method. 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void GetNetworks(const base::ListValue* arg_list) const; 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void GetProperties(const base::ListValue* arg_list); 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void GetManagedProperties(const base::ListValue* arg_list); 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void GetPropertiesSuccess(int callback_id, 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& service_path, 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::DictionaryValue& dictionary) const; 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Get Shill Properties for debugging purposes only. 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void GetShillProperties(const base::ListValue* arg_list); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void GetShillPropertiesSuccess(int callback_id, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& service_path, 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::DictionaryValue& dictionary) const; 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void InvokeCallback(const base::ListValue& arg_list) const; 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void ErrorCallback(int callback_id, 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& error_name, 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<base::DictionaryValue> error_data) const; 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::WeakPtrFactory<NetworkConfigMessageHandler> weak_ptr_factory_; 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NetworkConfigMessageHandler); 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace chromeos 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_NETWORK_CONFIG_MESSAGE_HANDLER_H_ 64