cefclient: Use HTTPS for test URLs
Some features that we wish to test require HTTPS. Also, Chrome runtime is redirecting HTTP URLs to HTTPS due to HSTS.
This commit is contained in:
parent
13557bb259
commit
4ac1d370e1
|
@ -7,6 +7,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include "include/cef_parser.h"
|
#include "include/cef_parser.h"
|
||||||
|
#include "tests/cefclient/browser/test_runner.h"
|
||||||
#include "tests/shared/browser/client_app_browser.h"
|
#include "tests/shared/browser/client_app_browser.h"
|
||||||
#include "tests/shared/common/client_switches.h"
|
#include "tests/shared/common/client_switches.h"
|
||||||
#include "tests/shared/common/string_util.h"
|
#include "tests/shared/common/string_util.h"
|
||||||
|
@ -128,7 +129,7 @@ MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
|
||||||
if (use_views_ && command_line->HasSwitch(switches::kHideFrame) &&
|
if (use_views_ && command_line->HasSwitch(switches::kHideFrame) &&
|
||||||
!command_line_->HasSwitch(switches::kUrl)) {
|
!command_line_->HasSwitch(switches::kUrl)) {
|
||||||
// Use the draggable regions test as the default URL for frameless windows.
|
// Use the draggable regions test as the default URL for frameless windows.
|
||||||
main_url_ = "http://tests/draggable";
|
main_url_ = test_runner::GetTestURL("draggable");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command_line_->HasSwitch(switches::kBackgroundColor)) {
|
if (command_line_->HasSwitch(switches::kBackgroundColor)) {
|
||||||
|
|
|
@ -31,9 +31,6 @@ const char kPortKey[] = "port";
|
||||||
const char kStatusKey[] = "status";
|
const char kStatusKey[] = "status";
|
||||||
const char kMessageKey[] = "message";
|
const char kMessageKey[] = "message";
|
||||||
|
|
||||||
// Required URL for cefQuery execution.
|
|
||||||
const char kTestUrl[] = "http://tests/server";
|
|
||||||
|
|
||||||
// Server default values.
|
// Server default values.
|
||||||
const char kServerAddress[] = "127.0.0.1";
|
const char kServerAddress[] = "127.0.0.1";
|
||||||
const int kServerPortDefault = 8099;
|
const int kServerPortDefault = 8099;
|
||||||
|
@ -234,7 +231,7 @@ class Handler : public CefMessageRouterBrowserSide::Handler {
|
||||||
|
|
||||||
// Only handle messages from the test URL.
|
// Only handle messages from the test URL.
|
||||||
const std::string& url = frame->GetURL();
|
const std::string& url = frame->GetURL();
|
||||||
if (url.find(kTestUrl) != 0) {
|
if (url.find(test_runner::GetTestURL("server")) != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace {
|
||||||
|
|
||||||
const char kTestHost[] = "tests";
|
const char kTestHost[] = "tests";
|
||||||
const char kLocalHost[] = "localhost";
|
const char kLocalHost[] = "localhost";
|
||||||
const char kTestOrigin[] = "http://tests/";
|
const char kTestOrigin[] = "https://tests/";
|
||||||
|
|
||||||
// Pages handled via StringResourceProvider.
|
// Pages handled via StringResourceProvider.
|
||||||
const char kTestGetSourcePage[] = "get_source.html";
|
const char kTestGetSourcePage[] = "get_source.html";
|
||||||
|
@ -102,18 +102,18 @@ void RunRequestTest(CefRefPtr<CefBrowser> browser) {
|
||||||
// Create a new request
|
// Create a new request
|
||||||
CefRefPtr<CefRequest> request(CefRequest::Create());
|
CefRefPtr<CefRequest> request(CefRequest::Create());
|
||||||
|
|
||||||
if (browser->GetMainFrame()->GetURL().ToString().find("http://tests/") != 0) {
|
if (browser->GetMainFrame()->GetURL().ToString().find(kTestOrigin) != 0) {
|
||||||
// The LoadRequest method will fail with "bad IPC message" reason
|
// The LoadRequest method will fail with "bad IPC message" reason
|
||||||
// INVALID_INITIATOR_ORIGIN (213) unless you first navigate to the
|
// INVALID_INITIATOR_ORIGIN (213) unless you first navigate to the
|
||||||
// request origin using some other mechanism (LoadURL, link click, etc).
|
// request origin using some other mechanism (LoadURL, link click, etc).
|
||||||
Alert(browser,
|
Alert(browser, "Please first navigate to a " + std::string(kTestOrigin) +
|
||||||
"Please first navigate to a http://tests/ URL. "
|
" URL. "
|
||||||
"For example, first load Tests > Other Tests.");
|
"For example, first load Tests > Other Tests.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the request URL
|
// Set the request URL
|
||||||
request->SetURL("http://tests/request");
|
request->SetURL(GetTestURL("request"));
|
||||||
|
|
||||||
// Add post data to the request. The correct method and content-
|
// Add post data to the request. The correct method and content-
|
||||||
// type headers will be set by CEF.
|
// type headers will be set by CEF.
|
||||||
|
@ -419,7 +419,7 @@ void MuteAudio(CefRefPtr<CefBrowser> browser, bool mute) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunOtherTests(CefRefPtr<CefBrowser> browser) {
|
void RunOtherTests(CefRefPtr<CefBrowser> browser) {
|
||||||
browser->GetMainFrame()->LoadURL("http://tests/other_tests");
|
browser->GetMainFrame()->LoadURL(GetTestURL("other_tests"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Provider that dumps the request contents.
|
// Provider that dumps the request contents.
|
||||||
|
@ -679,7 +679,7 @@ CefRefPtr<CefStreamReader> GetDumpResponse(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!origin.empty() &&
|
if (!origin.empty() &&
|
||||||
(origin.find("http://" + std::string(kTestHost)) == 0 ||
|
(origin.find("https://" + std::string(kTestHost)) == 0 ||
|
||||||
origin.find("http://" + std::string(kLocalHost)) == 0)) {
|
origin.find("http://" + std::string(kLocalHost)) == 0)) {
|
||||||
// Allow cross-origin XMLHttpRequests from test origins.
|
// Allow cross-origin XMLHttpRequests from test origins.
|
||||||
response_headers.insert(
|
response_headers.insert(
|
||||||
|
@ -832,6 +832,10 @@ void Alert(CefRefPtr<CefBrowser> browser, const std::string& message) {
|
||||||
frame->ExecuteJavaScript("alert('" + msg + "');", frame->GetURL(), 0);
|
frame->ExecuteJavaScript("alert('" + msg + "');", frame->GetURL(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string GetTestURL(const std::string& path) {
|
||||||
|
return kTestOrigin + path;
|
||||||
|
}
|
||||||
|
|
||||||
bool IsTestURL(const std::string& url, const std::string& path) {
|
bool IsTestURL(const std::string& url, const std::string& path) {
|
||||||
CefURLParts parts;
|
CefURLParts parts;
|
||||||
CefParseURL(url, parts);
|
CefParseURL(url, parts);
|
||||||
|
|
|
@ -44,8 +44,11 @@ void SetupResourceManager(CefRefPtr<CefResourceManager> resource_manager,
|
||||||
// Show a JS alert message.
|
// Show a JS alert message.
|
||||||
void Alert(CefRefPtr<CefBrowser> browser, const std::string& message);
|
void Alert(CefRefPtr<CefBrowser> browser, const std::string& message);
|
||||||
|
|
||||||
|
// Returns "https://tests/<path>".
|
||||||
|
std::string GetTestURL(const std::string& path);
|
||||||
|
|
||||||
// Returns true if |url| is a test URL with the specified |path|. This matches
|
// Returns true if |url| is a test URL with the specified |path|. This matches
|
||||||
// both http://tests/<path> and http://localhost:xxxx/<path>.
|
// both "https://tests/<path>" and "http://localhost:xxxx/<path>".
|
||||||
bool IsTestURL(const std::string& url, const std::string& path);
|
bool IsTestURL(const std::string& url, const std::string& path);
|
||||||
|
|
||||||
// Create all CefMessageRouterBrowserSide::Handler objects. They will be
|
// Create all CefMessageRouterBrowserSide::Handler objects. They will be
|
||||||
|
|
|
@ -24,7 +24,7 @@ function setButtonState(start_enabled, stop_enabled) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
||||||
if (location.origin != 'http://tests') {
|
if (location.origin != 'https://tests') {
|
||||||
document.getElementById('warning').style.display = 'block';
|
document.getElementById('warning').style.display = 'block';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ function openServer() {
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white" onload="setup()">
|
<body bgcolor="white" onload="setup()">
|
||||||
<div id="warning" style="display:none;color:red;font-weight:bold;">
|
<div id="warning" style="display:none;color:red;font-weight:bold;">
|
||||||
This page can only be run from the http://tests origin.
|
This page can only be run from the https://tests origin.
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
This page starts an HTTP/WebSocket server on localhost with the specified port number.
|
This page starts an HTTP/WebSocket server on localhost with the specified port number.
|
||||||
|
|
|
@ -87,7 +87,7 @@ function doSend() {
|
||||||
<body bgcolor="white" onload="setup()">
|
<body bgcolor="white" onload="setup()">
|
||||||
<div id="warning" style="display:none;color:red;font-weight:bold;">
|
<div id="warning" style="display:none;color:red;font-weight:bold;">
|
||||||
This page is most useful when loaded from localhost.
|
This page is most useful when loaded from localhost.
|
||||||
You should first create a server using the <a href="http://tests/server">HTTP/WebSocket Server test</a>.
|
You should first create a server using the <a href="https://tests/server">HTTP/WebSocket Server test</a>.
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
This page tests a WebSocket connection.
|
This page tests a WebSocket connection.
|
||||||
|
|
|
@ -30,7 +30,7 @@ function execXMLHttpRequest()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<form>
|
<form>
|
||||||
URL: <input type="text" id="url" value="http://tests/request">
|
URL: <input type="text" id="url" value="https://tests/request">
|
||||||
<br/><input type="button" onclick="execXMLHttpRequest();" value="Execute XMLHttpRequest">
|
<br/><input type="button" onclick="execXMLHttpRequest();" value="Execute XMLHttpRequest">
|
||||||
<br/><textarea rows="10" cols="40" id="ta"></textarea>
|
<br/><textarea rows="10" cols="40" id="ta"></textarea>
|
||||||
</form>
|
</form>
|
||||||
|
|
Loading…
Reference in New Issue