• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Support utilities for the JSON automation interface used by PyAuto.
6 
7 #ifndef CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_JSON_H_
8 #define CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_JSON_H_
9 #pragma once
10 
11 #include <string>
12 
13 #include "base/compiler_specific.h"
14 
15 class AutomationProvider;
16 class Browser;
17 class DictionaryValue;
18 class TabContents;
19 class Value;
20 
21 namespace IPC {
22 class Message;
23 }
24 
25 // Helper to ensure we always send a reply message for JSON automation requests.
26 class AutomationJSONReply {
27  public:
28   // Creates a new reply object for the IPC message |reply_message| for
29   // |provider|. The caller is expected to call SendSuccess() or SendError()
30   // before destroying this object.
31   AutomationJSONReply(AutomationProvider* provider,
32                       IPC::Message* reply_message);
33 
34   ~AutomationJSONReply();
35 
36   // Send a success reply along with data contained in |value|.
37   // An empty message will be sent if |value| is NULL.
38   void SendSuccess(const Value* value);
39 
40   // Send an error reply along with error message |error_message|.
41   void SendError(const std::string& error_message);
42 
43  private:
44   AutomationProvider* provider_;
45   IPC::Message* message_;
46 };
47 
48 // Gets the browser specified by the given dictionary |args|. |args| should
49 // contain a key 'windex' which refers to the index of the browser. Returns
50 // true on success and sets |browser|. Otherwise, |error| will be set.
51 bool GetBrowserFromJSONArgs(DictionaryValue* args,
52                             Browser** browser,
53                             std::string* error) WARN_UNUSED_RESULT;
54 
55 // Gets the tab specified by the given dictionary |args|. |args| should
56 // contain a key 'windex' which refers to the index of the parent browser,
57 // and a key 'tab_index' which refers to the index of the tab in that browser.
58 // Returns true on success and sets |tab|. Otherwise, |error| will be set.
59 bool GetTabFromJSONArgs(DictionaryValue* args,
60                         TabContents** tab,
61                         std::string* error) WARN_UNUSED_RESULT;
62 
63 // Gets the browser and tab specified by the given dictionary |args|. |args|
64 // should contain a key 'windex' which refers to the index of the browser and
65 // a key 'tab_index' which refers to the index of the tab in that browser.
66 // Returns true on success and sets |browser| and |tab|. Otherwise, |error|
67 // will be set.
68 bool GetBrowserAndTabFromJSONArgs(DictionaryValue* args,
69                                   Browser** browser,
70                                   TabContents** tab,
71                                   std::string* error) WARN_UNUSED_RESULT;
72 
73 #endif  // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_JSON_H_
74