blob: a1923c1b8d99d31e6f8c1058a972b3e522e55c3d [file] [log] [blame]
[email protected]6d2d55b2012-05-05 21:33:431// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]637bf322011-10-01 20:46:322// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_TEST_UTILS_H_
6#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_TEST_UTILS_H_
[email protected]637bf322011-10-01 20:46:327
8#include <string>
9
10#include "base/memory/ref_counted.h"
[email protected]d42c1112013-08-22 19:36:3211#include "extensions/common/manifest.h"
[email protected]4e3ce3b2011-10-14 23:25:1712
13class Browser;
[email protected]4e3ce3b2011-10-14 23:25:1714class UIThreadExtensionFunction;
[email protected]637bf322011-10-01 20:46:3215
16namespace base {
17class Value;
18class DictionaryValue;
19class ListValue;
20}
21
dchengc963c7142016-04-08 03:55:2222// TODO(ckehoe): Accept args as std::unique_ptr<base::Value>,
[email protected]fc672e12014-08-16 08:16:1523// and migrate existing users to the new API.
yozb6272ef2014-08-28 02:23:0524// This file is DEPRECATED. New tests should use the versions in
25// extensions/browser/api_test_utils.h.
[email protected]637bf322011-10-01 20:46:3226namespace extension_function_test_utils {
27
Devlin Cronin2e6f4f872017-10-03 00:07:2428// Parse JSON and return as a ListValue, or null if invalid.
[email protected]637bf322011-10-01 20:46:3229base::ListValue* ParseList(const std::string& data);
[email protected]637bf322011-10-01 20:46:3230
31// If |val| is a dictionary, return it as one, otherwise NULL.
32base::DictionaryValue* ToDictionary(base::Value* val);
33
[email protected]008ff7fb2011-12-19 08:51:1734// If |val| is a list, return it as one, otherwise NULL.
35base::ListValue* ToList(base::Value* val);
36
[email protected]37bb5822012-09-10 15:09:5737// Returns true if |val| contains privacy information, e.g. url,
38// title, and faviconUrl.
39bool HasPrivacySensitiveFields(base::DictionaryValue* val);
40
[email protected]637bf322011-10-01 20:46:3241enum RunFunctionFlags {
42 NONE = 0,
43 INCLUDE_INCOGNITO = 1 << 0
44};
45
46// Run |function| with |args| and return the resulting error. Adds an error to
[email protected]4f9c79ec2013-03-21 04:41:3747// the current test if |function| returns a result. Takes ownership of
48// |function|.
[email protected]637bf322011-10-01 20:46:3249std::string RunFunctionAndReturnError(UIThreadExtensionFunction* function,
50 const std::string& args,
51 Browser* browser,
52 RunFunctionFlags flags);
53std::string RunFunctionAndReturnError(UIThreadExtensionFunction* function,
54 const std::string& args,
55 Browser* browser);
56
57// Run |function| with |args| and return the result. Adds an error to the
[email protected]4f9c79ec2013-03-21 04:41:3758// current test if |function| returns an error. Takes ownership of
59// |function|. The caller takes ownership of the result.
[email protected]07ff5fd2012-07-12 22:39:0960base::Value* RunFunctionAndReturnSingleResult(
61 UIThreadExtensionFunction* function,
62 const std::string& args,
63 Browser* browser,
64 RunFunctionFlags flags);
65base::Value* RunFunctionAndReturnSingleResult(
66 UIThreadExtensionFunction* function,
67 const std::string& args,
68 Browser* browser);
[email protected]637bf322011-10-01 20:46:3269
[email protected]bdfc03e2011-11-22 00:20:3370// Create and run |function| with |args|. Works with both synchronous and async
[email protected]4f9c79ec2013-03-21 04:41:3771// functions. Ownership of |function| remains with the caller.
[email protected]637bf322011-10-01 20:46:3272//
73// TODO(aa): It would be nice if |args| could be validated against the schema
74// that |function| expects. That way, we know that we are testing something
75// close to what the bindings would actually send.
76//
77// TODO(aa): I'm concerned that this style won't scale to all the bits and bobs
[email protected]bdfc03e2011-11-22 00:20:3378// we're going to need to frob for all the different extension functions. But
79// we can refactor when we see what is needed.
80bool RunFunction(UIThreadExtensionFunction* function,
[email protected]637bf322011-10-01 20:46:3281 const std::string& args,
82 Browser* browser,
83 RunFunctionFlags flags);
[email protected]fc672e12014-08-16 08:16:1584bool RunFunction(UIThreadExtensionFunction* function,
dchengc963c7142016-04-08 03:55:2285 std::unique_ptr<base::ListValue> args,
[email protected]fc672e12014-08-16 08:16:1586 Browser* browser,
87 RunFunctionFlags flags);
[email protected]637bf322011-10-01 20:46:3288
[email protected]637bf322011-10-01 20:46:3289} // namespace extension_function_test_utils
90
91#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_TEST_UTILS_H_