1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
// Copyright 2012 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_TEST_PPAPI_PPAPI_TEST_H_
#define CHROME_TEST_PPAPI_PPAPI_TEST_H_
#include <string>
#include "base/scoped_observation.h"
#include "base/test/scoped_feature_list.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "components/infobars/core/infobar_manager.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/javascript_test_observer.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "third_party/blink/public/common/input/web_input_event.h"
namespace infobars {
class ContentInfoBarManager;
}
class PPAPITestMessageHandler : public content::TestMessageHandler {
public:
PPAPITestMessageHandler();
PPAPITestMessageHandler(const PPAPITestMessageHandler&) = delete;
PPAPITestMessageHandler& operator=(const PPAPITestMessageHandler&) = delete;
MessageResponse HandleMessage(const std::string& json) override;
void Reset() override;
const std::string& message() const {
return message_;
}
private:
std::string message_;
};
class PPAPITestBase : public InProcessBrowserTest {
public:
PPAPITestBase();
// InProcessBrowserTest:
void SetUp() override;
void SetUpCommandLine(base::CommandLine* command_line) override;
void SetUpOnMainThread() override;
virtual std::string BuildQuery(const std::string& base,
const std::string& test_case) = 0;
// Returns the URL to load for file: tests.
GURL GetTestFileUrl(const std::string& test_case);
virtual void RunTest(const std::string& test_case);
virtual void RunTestViaHTTP(const std::string& test_case);
virtual void RunTestWithSSLServer(const std::string& test_case);
virtual void RunTestWithWebSocketServer(const std::string& test_case);
virtual void RunTestIfAudioOutputAvailable(const std::string& test_case);
virtual void RunTestViaHTTPIfAudioOutputAvailable(
const std::string& test_case);
protected:
class InfoBarObserver : public infobars::InfoBarManager::Observer {
public:
explicit InfoBarObserver(PPAPITestBase* test_base);
~InfoBarObserver();
void ExpectInfoBarAndAccept(bool should_accept);
private:
// infobars::InfoBarManager::Observer:
void OnInfoBarAdded(infobars::InfoBar* infobar) override;
void OnManagerShuttingDown(infobars::InfoBarManager* manager) override;
infobars::ContentInfoBarManager* GetInfoBarManager();
void VerifyInfoBarState();
PPAPITestBase* test_base_;
bool expecting_infobar_;
bool should_accept_;
base::ScopedObservation<infobars::InfoBarManager,
infobars::InfoBarManager::Observer>
infobar_observation_{this};
};
// Runs the test for a tab given the tab that's already navigated to the
// given URL.
void RunTestURL(const GURL& test_url);
// Gets the URL of the the given |test_case| for the given HTTP test server.
// If |extra_params| is non-empty, it will be appended as URL parameters.
GURL GetTestURL(const net::EmbeddedTestServer& http_server,
const std::string& test_case,
const std::string& extra_params);
base::test::ScopedFeatureList scoped_feature_list_;
};
// In-process plugin test runner. See OutOfProcessPPAPITest below for the
// out-of-process version.
class PPAPITest : public PPAPITestBase {
public:
PPAPITest();
void SetUpCommandLine(base::CommandLine* command_line) override;
std::string BuildQuery(const std::string& base,
const std::string& test_case) override;
protected:
bool in_process_; // Controls the --ppapi-in-process switch.
};
class PPAPIPrivateTest : public PPAPITest {
protected:
void SetUpCommandLine(base::CommandLine* command_line) override;
};
// Variant of PPAPITest that runs plugins out-of-process to test proxy
// codepaths.
class OutOfProcessPPAPITest : public PPAPITest {
public:
OutOfProcessPPAPITest();
void SetUpCommandLine(base::CommandLine* command_line) override;
void RunTouchEventTest(const std::string& test_case);
};
class OutOfProcessPPAPIPrivateTest : public OutOfProcessPPAPITest {
protected:
void SetUpCommandLine(base::CommandLine* command_line) override;
};
// NaCl plugin test runner for Newlib runtime.
class PPAPINaClTest : public PPAPITestBase {
public:
void SetUpCommandLine(base::CommandLine* command_line) override;
// PPAPITestBase overrides.
void RunTest(const std::string& test_case) override;
void RunTestViaHTTP(const std::string& test_case) override;
void RunTestWithSSLServer(const std::string& test_case) override;
void RunTestWithWebSocketServer(const std::string& test_case) override;
void RunTestIfAudioOutputAvailable(const std::string& test_case) override;
void RunTestViaHTTPIfAudioOutputAvailable(
const std::string& test_case) override;
};
// NaCl plugin test runner for Newlib runtime.
class PPAPINaClNewlibTest : public PPAPINaClTest {
public:
std::string BuildQuery(const std::string& base,
const std::string& test_case) override;
};
class PPAPIPrivateNaClNewlibTest : public PPAPINaClNewlibTest {
protected:
void SetUpCommandLine(base::CommandLine* command_line) override;
};
// NaCl plugin test runner for GNU-libc runtime.
class PPAPINaClGLibcTest : public PPAPINaClTest {
public:
std::string BuildQuery(const std::string& base,
const std::string& test_case) override;
};
class PPAPIPrivateNaClGLibcTest : public PPAPINaClGLibcTest {
protected:
void SetUpCommandLine(base::CommandLine* command_line) override;
};
// NaCl plugin test runner for the PNaCl + Newlib runtime.
class PPAPINaClPNaClTest : public PPAPINaClTest {
public:
std::string BuildQuery(const std::string& base,
const std::string& test_case) override;
};
class PPAPIPrivateNaClPNaClTest : public PPAPINaClPNaClTest {
protected:
void SetUpCommandLine(base::CommandLine* command_line) override;
};
class PPAPINaClTestDisallowedSockets : public PPAPITestBase {
public:
void SetUpCommandLine(base::CommandLine* command_line) override;
std::string BuildQuery(const std::string& base,
const std::string& test_case) override;
};
class PPAPIBrokerInfoBarTest : public OutOfProcessPPAPITest {};
#endif // CHROME_TEST_PPAPI_PPAPI_TEST_H_
|