mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Support configuration of the "Accept-Language" HTTP header globally or on a per-browser basis using new CefSettings.accept_language_list and CefBrowserSettings.accept_language_list members (issue #318).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@2033 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include "include/cef_scheme.h"
|
||||
#include "include/wrapper/cef_closure_task.h"
|
||||
#include "tests/unittests/test_handler.h"
|
||||
#include "tests/unittests/test_suite.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -34,6 +35,7 @@ class TestResults {
|
||||
sub_status_code = 0;
|
||||
sub_allow_origin.clear();
|
||||
exit_url.clear();
|
||||
accept_language.clear();
|
||||
delay = 0;
|
||||
got_request.reset();
|
||||
got_read.reset();
|
||||
@@ -60,6 +62,9 @@ class TestResults {
|
||||
std::string sub_redirect_url;
|
||||
std::string exit_url;
|
||||
|
||||
// Used for testing per-browser Accept-Language.
|
||||
std::string accept_language;
|
||||
|
||||
// Delay for returning scheme handler results.
|
||||
int delay;
|
||||
|
||||
@@ -87,6 +92,13 @@ class TestSchemeHandler : public TestHandler {
|
||||
g_current_handler = this;
|
||||
}
|
||||
|
||||
void PopulateBrowserSettings(CefBrowserSettings* settings) override {
|
||||
if (!test_results_->accept_language.empty()) {
|
||||
CefString(&settings->accept_language_list) =
|
||||
test_results_->accept_language;
|
||||
}
|
||||
}
|
||||
|
||||
void RunTest() override {
|
||||
CreateBrowser(test_results_->url);
|
||||
|
||||
@@ -194,6 +206,27 @@ class ClientSchemeHandler : public CefResourceHandler {
|
||||
handled = true;
|
||||
}
|
||||
|
||||
std::string accept_language;
|
||||
CefRequest::HeaderMap headerMap;
|
||||
CefRequest::HeaderMap::iterator headerIter;
|
||||
request->GetHeaderMap(headerMap);
|
||||
headerIter = headerMap.find("Accept-Language");
|
||||
if (headerIter != headerMap.end())
|
||||
accept_language = headerIter->second;
|
||||
EXPECT_TRUE(!accept_language.empty());
|
||||
|
||||
if (!test_results_->accept_language.empty()) {
|
||||
// Value from CefBrowserSettings.accept_language set in
|
||||
// PopulateBrowserSettings().
|
||||
EXPECT_STREQ(test_results_->accept_language.data(),
|
||||
accept_language.data());
|
||||
} else {
|
||||
// Value from CefSettings.accept_language set in
|
||||
// CefTestSuite::GetSettings().
|
||||
EXPECT_STREQ(CEF_SETTINGS_ACCEPT_LANGUAGE,
|
||||
accept_language.data());
|
||||
}
|
||||
|
||||
if (handled) {
|
||||
if (test_results_->delay > 0) {
|
||||
// Continue after the delay.
|
||||
@@ -1563,6 +1596,29 @@ TEST(SchemeHandlerTest,
|
||||
ClearTestSchemes();
|
||||
}
|
||||
|
||||
// Test per-browser setting of Accept-Language.
|
||||
TEST(SchemeHandlerTest, AcceptLanguage) {
|
||||
RegisterTestScheme("customstd", "test");
|
||||
g_TestResults.url = "customstd://test/run.html";
|
||||
g_TestResults.html =
|
||||
"<html><head></head><body><h1>Success!</h1></body></html>";
|
||||
g_TestResults.status_code = 200;
|
||||
|
||||
// Value that will be set via CefBrowserSettings.accept_language in
|
||||
// PopulateBrowserSettings().
|
||||
g_TestResults.accept_language = "uk";
|
||||
|
||||
CefRefPtr<TestSchemeHandler> handler = new TestSchemeHandler(&g_TestResults);
|
||||
handler->ExecuteTest();
|
||||
ReleaseAndWaitForDestructor(handler);
|
||||
|
||||
EXPECT_TRUE(g_TestResults.got_request);
|
||||
EXPECT_TRUE(g_TestResults.got_read);
|
||||
EXPECT_TRUE(g_TestResults.got_output);
|
||||
|
||||
ClearTestSchemes();
|
||||
}
|
||||
|
||||
|
||||
// Entry point for registering custom schemes.
|
||||
// Called from client_app_delegates.cc.
|
||||
|
Reference in New Issue
Block a user