summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarja <marja@chromium.org>2014-09-18 01:51:47 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-18 08:52:02 +0000
commitaaf6266635e4e7228a569be50b14f7668eaca62f (patch)
tree038655a9a89407847b47baa23654f32f56a12901
parentf1ae325a5db81e728b4e3075546cfdd1f24bc304 (diff)
downloadchromium_src-aaf6266635e4e7228a569be50b14f7668eaca62f.zip
chromium_src-aaf6266635e4e7228a569be50b14f7668eaca62f.tar.gz
chromium_src-aaf6266635e4e7228a569be50b14f7668eaca62f.tar.bz2
Add a command line option and a Finch experiment for script streaming.
Script streaming is implemented here: https://codereview.chromium.org/368283002 BUG= Review URL: https://codereview.chromium.org/547373002 Cr-Commit-Position: refs/heads/master@{#295437}
-rw-r--r--chrome/browser/chrome_browser_field_trials.cc1
-rw-r--r--content/browser/renderer_host/render_view_host_impl.cc5
-rw-r--r--content/public/common/common_param_traits_macros.h1
-rw-r--r--content/public/common/content_switches.cc3
-rw-r--r--content/public/common/content_switches.h1
-rw-r--r--content/public/common/web_preferences.cc1
-rw-r--r--content/public/common/web_preferences.h1
-rw-r--r--content/renderer/render_view_impl.cc2
8 files changed, 15 insertions, 0 deletions
diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chrome_browser_field_trials.cc
index 4fd69b8..398305e 100644
--- a/chrome/browser/chrome_browser_field_trials.cc
+++ b/chrome/browser/chrome_browser_field_trials.cc
@@ -54,6 +54,7 @@ void ChromeBrowserFieldTrials::InstantiateDynamicTrials() {
base::FieldTrialList::FindValue("MouseEventPreconnect");
base::FieldTrialList::FindValue("UnauthorizedPluginInfoBar");
base::FieldTrialList::FindValue("DisplayList2dCanvas");
+ base::FieldTrialList::FindValue("V8ScriptStreaming");
// Activate the autocomplete dynamic field trials.
OmniboxFieldTrial::ActivateDynamicTrials();
}
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index 8f497f7..222f263 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -15,6 +15,7 @@
#include "base/i18n/rtl.h"
#include "base/json/json_reader.h"
#include "base/message_loop/message_loop.h"
+#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
@@ -477,6 +478,10 @@ WebPreferences RenderViewHostImpl::ComputeWebkitPrefs(const GURL& url) {
}
}
+ prefs.v8_script_streaming_enabled =
+ command_line.HasSwitch(switches::kEnableV8ScriptStreaming) ||
+ base::FieldTrialList::FindFullName("V8ScriptStreaming") == "Enabled";
+
GetContentClient()->browser()->OverrideWebkitPrefs(this, url, &prefs);
return prefs;
}
diff --git a/content/public/common/common_param_traits_macros.h b/content/public/common/common_param_traits_macros.h
index 56b23e4..eede504 100644
--- a/content/public/common/common_param_traits_macros.h
+++ b/content/public/common/common_param_traits_macros.h
@@ -176,6 +176,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences)
IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop)
IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled)
IPC_STRUCT_TRAITS_MEMBER(v8_cache_options)
+ IPC_STRUCT_TRAITS_MEMBER(v8_script_streaming_enabled)
IPC_STRUCT_TRAITS_MEMBER(pepper_accelerated_video_decode_enabled)
#if defined(OS_ANDROID)
IPC_STRUCT_TRAITS_MEMBER(text_autosizing_enabled)
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index 0fdcfe2..c429372 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -452,6 +452,9 @@ const char kEnableTracingOutput[] = "enable-tracing-output";
const char kEnableUserMediaScreenCapturing[] =
"enable-usermedia-screen-capturing";
+// Enables streaming scripts to V8 while loading.
+const char kEnableV8ScriptStreaming[] = "enable-v8-script-streaming";
+
// Enables the use of the @viewport CSS rule, which allows
// pages to control aspects of their own layout. This also turns on touch-screen
// pinch gestures.
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
index 1c4493c..5196e83 100644
--- a/content/public/common/content_switches.h
+++ b/content/public/common/content_switches.h
@@ -133,6 +133,7 @@ CONTENT_EXPORT extern const char kEnableThreadedCompositing[];
CONTENT_EXPORT extern const char kEnableTracing[];
CONTENT_EXPORT extern const char kEnableTracingOutput[];
CONTENT_EXPORT extern const char kEnableUserMediaScreenCapturing[];
+extern const char kEnableV8ScriptStreaming[];
CONTENT_EXPORT extern const char kEnableViewport[];
CONTENT_EXPORT extern const char kEnableViewportMeta[];
CONTENT_EXPORT extern const char kMainFrameResizesAreOrientationChanges[];
diff --git a/content/public/common/web_preferences.cc b/content/public/common/web_preferences.cc
index d1e656d..32f7987 100644
--- a/content/public/common/web_preferences.cc
+++ b/content/public/common/web_preferences.cc
@@ -136,6 +136,7 @@ WebPreferences::WebPreferences()
use_solid_color_scrollbars(false),
navigate_on_drag_drop(true),
v8_cache_options(V8_CACHE_OPTIONS_OFF),
+ v8_script_streaming_enabled(false),
cookie_enabled(true),
pepper_accelerated_video_decode_enabled(false)
#if defined(OS_ANDROID)
diff --git a/content/public/common/web_preferences.h b/content/public/common/web_preferences.h
index 496a347..b0a95ca 100644
--- a/content/public/common/web_preferences.h
+++ b/content/public/common/web_preferences.h
@@ -142,6 +142,7 @@ struct CONTENT_EXPORT WebPreferences {
bool use_solid_color_scrollbars;
bool navigate_on_drag_drop;
V8CacheOptions v8_cache_options;
+ bool v8_script_streaming_enabled;
// This flags corresponds to a Page's Settings' setCookieEnabled state. It
// only controls whether or not the "document.cookie" field is properly
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 83ad060..eba0382 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1069,6 +1069,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
settings->setV8CacheOptions(
static_cast<WebSettings::V8CacheOptions>(prefs.v8_cache_options));
+ settings->setV8ScriptStreamingEnabled(prefs.v8_script_streaming_enabled);
+
#if defined(OS_ANDROID)
settings->setAllowCustomScrollbarInMainFrame(false);
settings->setTextAutosizingEnabled(prefs.text_autosizing_enabled);