Commit d4c23ca6 authored by carlosk's avatar carlosk Committed by Commit bot

Reland #1: Fix re-usage of stale cached WebPreferences in RenderViewHost.

(original change: https://codereview.chromium.org/2042763002)

In layout tests when preferences were being overridden by specific tests they
were not being properly applied in the browser. The WebPreferences cached by the
RenderViewHost was not updated and so they would not effect the existing window.
This fixes that and changes the way spatial navigation is enabled in layout
tests to adapt to this change.

The problem the original change that caused it to be reverted was that it made
preferences leak between tests when the Shell window was reused. This version
fixes that by storing a clean copy of the test-ready WebPrecerences created with
a brand new RenderView and using that to reset existing windows' preferences.

This is an spin off change to support the moving of mixed content checks to
the browser, which requires the browser to be immediately effected by
preferences updates.

BUG=576270, 620126

Review-Url: https://codereview.chromium.org/2134723002
Cr-Commit-Position: refs/heads/master@{#404627}
parent 866025e8
......@@ -49,6 +49,7 @@ void TestPreferences::Reset() {
disable_reading_from_canvas = false;
strict_mixed_content_checking = false;
strict_powerful_feature_restrictions = false;
spatial_navigation_enabled = false;
}
} // namespace test_runner
......@@ -43,6 +43,7 @@ struct TEST_RUNNER_EXPORT TestPreferences {
bool disable_reading_from_canvas;
bool strict_mixed_content_checking;
bool strict_powerful_feature_restrictions;
bool spatial_navigation_enabled;
TestPreferences();
void Reset();
......
......@@ -2320,6 +2320,8 @@ void TestRunner::OverridePreference(const std::string& key,
prefs->should_respect_image_orientation = value->BooleanValue();
} else if (key == "WebKitWebSecurityEnabled") {
prefs->web_security_enabled = value->BooleanValue();
} else if (key == "WebKitSpatialNavigationEnabled") {
prefs->spatial_navigation_enabled = value->BooleanValue();
} else {
std::string message("Invalid name for preference: ");
message.append(key);
......
......@@ -292,6 +292,8 @@ bool BlinkTestController::PrepareForLayoutTest(
initial_size_);
WebContentsObserver::Observe(main_window_->web_contents());
current_pid_ = base::kNullProcessId;
default_prefs_ =
main_window_->web_contents()->GetRenderViewHost()->GetWebkitPreferences();
main_window_->LoadURL(test_url);
} else {
#if defined(OS_MACOSX)
......@@ -309,9 +311,7 @@ bool BlinkTestController::PrepareForLayoutTest(
->WasResized();
RenderViewHost* render_view_host =
main_window_->web_contents()->GetRenderViewHost();
WebPreferences prefs = render_view_host->GetWebkitPreferences();
OverrideWebkitPrefs(&prefs);
render_view_host->UpdateWebkitPreferences(prefs);
render_view_host->UpdateWebkitPreferences(default_prefs_);
HandleNewRenderFrameHost(render_view_host->GetMainFrame());
NavigationController::LoadURLParams params(test_url);
......@@ -757,6 +757,15 @@ void BlinkTestController::OnPrintMessage(const std::string& message) {
void BlinkTestController::OnOverridePreferences(const WebPreferences& prefs) {
should_override_prefs_ = true;
prefs_ = prefs;
// Notifies the main RenderViewHost that Blink preferences changed so
// immediately apply the new settings and to avoid re-usage of cached
// preferences that are now stale. RenderViewHost::UpdateWebkitPreferences is
// not used here because it would send an unneeded preferences update to the
// renderer.
RenderViewHost* main_render_view_host =
main_window_->web_contents()->GetRenderViewHost();
main_render_view_host->OnWebkitPreferencesChanged();
}
void BlinkTestController::OnClearDevToolsLocalStorage() {
......
......@@ -248,6 +248,10 @@ class BlinkTestController : public base::NonThreadSafe,
gfx::Size initial_size_;
GURL test_url_;
// Stores the default test-adapted WebPreferences which is then used to fully
// reset the main window's preferences if and when it is reused.
WebPreferences default_prefs_;
// True if the WebPreferences of newly created RenderViewHost should be
// overridden with prefs_.
bool should_override_prefs_;
......
......@@ -50,6 +50,7 @@ void ExportLayoutTestSpecificPreferences(
from.strict_mixed_content_checking;
to->strict_powerful_feature_restrictions =
from.strict_powerful_feature_restrictions;
to->spatial_navigation_enabled = from.spatial_navigation_enabled;
}
// Applies settings that differ between layout tests and regular mode. Some
......
......@@ -16,9 +16,9 @@ struct TestPreferences;
namespace content {
struct WebPreferences;
// The TestRunner library keeps its settings in a WebPreferenes object.
// The TestRunner library keeps its settings in a TestPreferences object.
// The content_shell, however, uses WebPreferences. This method exports the
// settings from the WebTestRunner library which are relevant for layout tests.
// settings from the TestRunner library which are relevant for layout tests.
void ExportLayoutTestSpecificPreferences(
const test_runner::TestPreferences& from,
WebPreferences* to);
......
......@@ -22,7 +22,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -61,7 +61,7 @@ var resultMap = [
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
function runTest()
......
......@@ -49,7 +49,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -33,7 +33,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -41,7 +41,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -7,7 +7,7 @@ window.jsTestIsAsync = true;
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
</script>
</head>
......
......@@ -12,7 +12,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -21,7 +21,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -48,7 +48,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -54,7 +54,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -32,7 +32,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -12,7 +12,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -12,7 +12,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -12,7 +12,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -41,7 +41,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -37,7 +37,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -38,7 +38,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -31,7 +31,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -43,7 +43,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -16,7 +16,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -14,7 +14,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -24,7 +24,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -22,7 +22,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -52,7 +52,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -24,7 +24,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
function runTest()
......
......@@ -9,7 +9,7 @@
<script>
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
var multiselect = document.getElementById('multiselect');
......
......@@ -34,7 +34,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -51,7 +51,7 @@ var resultMap = [
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
function runTest()
......
......@@ -51,7 +51,7 @@ var resultMap = [
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
function runTest()
......
......@@ -36,7 +36,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -39,7 +39,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -72,7 +72,7 @@ var resultMap = [
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
function runTest()
......
......@@ -37,7 +37,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -29,7 +29,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -37,7 +37,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -34,7 +34,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -34,7 +34,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -60,7 +60,7 @@ var resultMap = [
if (window.testRunner) {
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
}
function runTest()
......
......@@ -35,7 +35,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -62,7 +62,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -38,7 +38,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -17,7 +17,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -42,7 +42,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -29,7 +29,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
......@@ -33,7 +33,7 @@
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
window.internals.settings.setSpatialNavigationEnabled(true);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment