
Migrate chrome.alarms() API unit tests to MV3 and remove references to MV2. No behavior changes. Bug: 40804030 Change-Id: Id208f78eff0547bf745bb9fb3b22126fdb9f4e27 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5372452 Reviewed-by: Tim <tjudkins@chromium.org> Reviewed-by: David Bertoni <dbertoni@chromium.org> Commit-Queue: Tim <tjudkins@chromium.org> Cr-Commit-Position: refs/heads/main@{#1340615}
89 lines
3.3 KiB
C++
89 lines
3.3 KiB
C++
// Copyright 2014 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_API_UNITTEST_H_
|
|
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_API_UNITTEST_H_
|
|
|
|
#include <memory>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <utility>
|
|
|
|
#include "base/memory/ref_counted.h"
|
|
#include "base/values.h"
|
|
#include "chrome/test/base/browser_with_test_window_test.h"
|
|
|
|
class ExtensionFunction;
|
|
|
|
namespace extensions {
|
|
|
|
// Use this class to enable calling API functions in a unittest.
|
|
// By default, this class will create and load an empty unpacked |extension_|,
|
|
// which will be used in all API function calls. This extension can be
|
|
// overridden using set_extension().
|
|
// By default, this class does not create a WebContents for the API functions.
|
|
// When calling RunFunction[AndReturn*], |args| should be in JSON format,
|
|
// wrapped in a list. See also RunFunction* in api_test_utils.h.
|
|
// TODO(yoz): Move users of this base class to use the equivalent base class
|
|
// in extensions/browser/api_unittest.h.
|
|
class ExtensionApiUnittest : public BrowserWithTestWindowTest {
|
|
public:
|
|
template <typename... TaskEnvironmentTraits>
|
|
explicit ExtensionApiUnittest(TaskEnvironmentTraits&&... traits)
|
|
: BrowserWithTestWindowTest(
|
|
std::forward<TaskEnvironmentTraits>(traits)...) {}
|
|
~ExtensionApiUnittest() override;
|
|
|
|
const Extension* extension() const { return extension_.get(); }
|
|
scoped_refptr<const Extension> extension_ref() { return extension_; }
|
|
void set_extension(scoped_refptr<const Extension> extension) {
|
|
extension_ = extension;
|
|
}
|
|
|
|
protected:
|
|
// SetUp creates and loads an empty, unpacked Extension.
|
|
void SetUp() override;
|
|
|
|
// Various ways of running an API function. These methods take ownership of
|
|
// |function|. |args| should be in JSON format, wrapped in a list.
|
|
// See also the RunFunction* methods in api_test_utils.h.
|
|
|
|
// Return the function result as a base::Value, if successful, or nullopt on
|
|
// failure.
|
|
std::optional<base::Value> RunFunctionAndReturnValue(
|
|
scoped_refptr<ExtensionFunction> function,
|
|
const std::string& args);
|
|
|
|
// Return the function result as a base::Value::Dict, if successful, or
|
|
// nullopt on failure. This will EXPECT-fail if the result is not a
|
|
// base::Value::Dict.
|
|
std::optional<base::Value::Dict> RunFunctionAndReturnDictionary(
|
|
scoped_refptr<ExtensionFunction> function,
|
|
const std::string& args);
|
|
|
|
// Return the function result as a base::Value::List, if successful, or
|
|
// nullopt on failure. This will EXPECT-fail if the result is not a list.
|
|
std::optional<base::Value::List> RunFunctionAndReturnList(
|
|
scoped_refptr<ExtensionFunction> function,
|
|
const std::string& args);
|
|
|
|
// Return an error thrown from the function, if one exists.
|
|
// This will EXPECT-fail if any result is returned from the function.
|
|
std::string RunFunctionAndReturnError(
|
|
scoped_refptr<ExtensionFunction> function,
|
|
const std::string& args);
|
|
|
|
// Run the function and ignore any result.
|
|
void RunFunction(scoped_refptr<ExtensionFunction> function,
|
|
const std::string& args);
|
|
|
|
private:
|
|
// The Extension used when running API function calls.
|
|
scoped_refptr<const Extension> extension_;
|
|
};
|
|
|
|
} // namespace extensions
|
|
|
|
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_API_UNITTEST_H_
|