summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorsimonjam@chromium.org <simonjam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-13 02:45:59 +0000
committersimonjam@chromium.org <simonjam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-13 02:45:59 +0000
commita7eda97977f5988c5a095e940823220b4511598b (patch)
tree7e794e00b286a00689890762401fb1783f43454c /content
parentb19ba553811bb027aadf6b7c1f52ca8142f33912 (diff)
downloadchromium_src-a7eda97977f5988c5a095e940823220b4511598b.zip
chromium_src-a7eda97977f5988c5a095e940823220b4511598b.tar.gz
chromium_src-a7eda97977f5988c5a095e940823220b4511598b.tar.bz2
Enable high resolution time for TimeTicks::Now on Windows Canary
This should be unnoticeable, except for improved resolution in places such as window.performance.now(). The feature is enabled if the user is running Canary channel or has manually specified the --enable-high-resolution-time flag. This will only work if the CPU has a non-stop TSC and isn't a broken Athlon processor. UMA data show this is a safe combination. The flag is propagated to renderer processes so that they know to enable it too. BUG=158234 Review URL: https://chromiumcodereview.appspot.com/16896018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217172 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/app/content_main_runner.cc3
-rw-r--r--content/browser/browser_child_process_host_impl.cc3
-rw-r--r--content/browser/renderer_host/render_process_host_impl.cc3
-rw-r--r--content/public/common/content_switches.cc5
-rw-r--r--content/public/common/content_switches.h3
5 files changed, 17 insertions, 0 deletions
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc
index 6554d57..4f8195c 100644
--- a/content/app/content_main_runner.cc
+++ b/content/app/content_main_runner.cc
@@ -671,6 +671,9 @@ class ContentMainRunnerImpl : public ContentMainRunner {
MachBroker::ChildSendTaskPortToParent();
}
#elif defined(OS_WIN)
+ if (command_line.HasSwitch(switches::kEnableHighResolutionTime))
+ base::TimeTicks::SetNowIsHighResNowIfSupported();
+
// This must be done early enough since some helper functions like
// IsTouchEnabled, needed to load resources, may call into the theme dll.
EnableThemeSupportOnAllWindowStations();
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc
index 780dc6a..76b85b2b 100644
--- a/content/browser/browser_child_process_host_impl.cc
+++ b/content/browser/browser_child_process_host_impl.cc
@@ -153,6 +153,9 @@ void BrowserChildProcessHostImpl::Launch(
#if defined(OS_POSIX)
switches::kChildCleanExit,
#endif
+#if defined(OS_WIN)
+ switches::kEnableHighResolutionTime,
+#endif
};
cmd_line->CopySwitchesFrom(browser_command_line, kForwardSwitches,
arraysize(kForwardSwitches));
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 2dd784a..b7f9dcb 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -932,6 +932,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
switches::kEnableGPUClientLogging,
switches::kEnableGpuClientTracing,
switches::kEnableGpuBenchmarking,
+#if defined(OS_WIN)
+ switches::kEnableHighResolutionTime,
+#endif
switches::kEnableMemoryBenchmarking,
switches::kEnableOverlayScrollbars,
switches::kEnableSkiaBenchmarking,
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index 5169ba4..582a345 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -399,6 +399,11 @@ const char kEnableGpuClientTracing[] = "enable-gpu-client-tracing";
const char kEnableHighDpiCompositingForFixedPosition[] =
"enable-high-dpi-fixed-position-compositing";
+#if defined(OS_WIN)
+// Use high resolution timers for TimeTicks.
+const char kEnableHighResolutionTime[] = "enable-high-resolution-time";
+#endif
+
// Enable HTML Imports
extern const char kEnableHTMLImports[] = "enable-html-imports";
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
index 949400a..aec086f 100644
--- a/content/public/common/content_switches.h
+++ b/content/public/common/content_switches.h
@@ -123,6 +123,9 @@ CONTENT_EXPORT extern const char kEnableGestureTapHighlight[];
extern const char kEnableGpuBenchmarking[];
extern const char kEnableGpuClientTracing[];
CONTENT_EXPORT extern const char kEnableHighDpiCompositingForFixedPosition[];
+ #if defined(OS_WIN)
+extern const char kEnableHighResolutionTime[];
+#endif
extern const char kEnableHTMLImports[];
CONTENT_EXPORT extern const char kEnableInbandTextTracks[];
CONTENT_EXPORT extern const char kEnableLogging[];