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