13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/basictypes.h" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/command_line.h" 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined(OS_MACOSX) 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/mac/mac_util.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/strings/stringprintf.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/test/trace_event_analyzer.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/win/windows_version.h" 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/extension_apitest.h" 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/tab_helper.h" 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/fullscreen/fullscreen_controller.h" 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/chrome_version_info.h" 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/test_launcher_utils.h" 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/test_switches.h" 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/tracing.h" 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/common/content_switches.h" 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/feature_switch.h" 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "extensions/common/features/base_feature_provider.h" 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "extensions/common/features/complex_feature.h" 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "extensions/common/features/feature.h" 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "extensions/common/features/simple_feature.h" 29e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "extensions/common/switches.h" 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/test/extension_test_message_listener.h" 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "testing/perf/perf_test.h" 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/compositor/compositor_switches.h" 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/gl/gl_switches.h" 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace { 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)const char kExtensionId[] = "ddchlicdkolnonkihahngkmmmjnjlkkf"; 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)enum TestFlags { 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kUseGpu = 1 << 0, // Only execute test if --enable-gpu was given 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // on the command line. This is required for 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // tests that run on GPU. 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kForceGpuComposited = 1 << 1, // Force the test to use the compositor. 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kDisableVsync = 1 << 2, // Do not limit framerate to vertical refresh. 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // when on GPU, nor to 60hz when not on GPU. 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kTestThroughWebRTC = 1 << 3, // Send captured frames through webrtc 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kSmallWindow = 1 << 4, // 1 = 800x600, 0 = 2000x1000 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScaleQualityMask = 3 << 5, // two bits select which scaling quality 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScaleQualityDefault = 0 << 5, // to use on aura. 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScaleQualityFast = 1 << 5, 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScaleQualityGood = 2 << 5, 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScaleQualityBest = 3 << 5, 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class TabCapturePerformanceTest 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) : public ExtensionApiTest, 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public testing::WithParamInterface<int> { 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TabCapturePerformanceTest() {} 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool HasFlag(TestFlags flag) const { 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return (GetParam() & flag) == flag; 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool IsGpuAvailable() const { 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return CommandLine::ForCurrentProcess()->HasSwitch("enable-gpu"); 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string ScalingMethod() const { 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) switch (GetParam() & kScaleQualityMask) { 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) case kScaleQualityFast: 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return "fast"; 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) case kScaleQualityGood: 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return "good"; 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) case kScaleQualityBest: 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return "best"; 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) default: 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return ""; 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string GetSuffixForTestFlags() { 853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string suffix; 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kForceGpuComposited)) 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) suffix += "_comp"; 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kUseGpu)) 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) suffix += "_gpu"; 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kDisableVsync)) 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) suffix += "_novsync"; 923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kTestThroughWebRTC)) 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) suffix += "_webrtc"; 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!ScalingMethod().empty()) 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) suffix += "_scale" + ScalingMethod(); 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kSmallWindow)) 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) suffix += "_small"; 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return suffix; 993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetUp() OVERRIDE { 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnablePixelOutput(); 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExtensionApiTest::SetUp(); 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 1073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!ScalingMethod().empty()) { 1083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) command_line->AppendSwitchASCII(switches::kTabCaptureUpscaleQuality, 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ScalingMethod()); 1103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) command_line->AppendSwitchASCII(switches::kTabCaptureDownscaleQuality, 1113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ScalingMethod()); 1123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Some of the tests may launch http requests through JSON or AJAX 1153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // which causes a security error (cross domain request) when the page 1163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // is loaded from the local file system ( file:// ). The following switch 1173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // fixes that error. 1183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) command_line->AppendSwitch(switches::kAllowFileAccessFromFiles); 1193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kSmallWindow)) { 1213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) command_line->AppendSwitchASCII(switches::kWindowSize, "800,600"); 1223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } else { 1233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) command_line->AppendSwitchASCII(switches::kWindowSize, "2000,1500"); 1243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (!HasFlag(kUseGpu)) 1271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) command_line->AppendSwitch(switches::kDisableGpu); 1283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kDisableVsync)) 1303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) command_line->AppendSwitch(switches::kDisableGpuVsync); 1313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 132e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch command_line->AppendSwitchASCII( 133e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch extensions::switches::kWhitelistedExtensionID, 134e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch kExtensionId); 1353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionApiTest::SetUpCommandLine(command_line); 1363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool PrintResults(trace_analyzer::TraceAnalyzer *analyzer, 1393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& test_name, 1403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& event_name, 1413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& unit) { 1423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::TraceEventVector events; 1433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::Query query = 1443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::Query::EventNameIs(event_name) && 1453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_BEGIN) || 146f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_COMPLETE) || 1473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_ASYNC_BEGIN) || 1483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_FLOW_BEGIN) || 1493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_INSTANT)); 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) analyzer->FindEvents(query, &events); 1513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (events.size() < 20) { 152f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) LOG(ERROR) << "Not enough events of type " << event_name << " found (" 153f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) << events.size() << ")."; 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return false; 1553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Ignore some events for startup/setup/caching. 1583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::TraceEventVector rate_events(events.begin() + 3, 1593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) events.end() - 3); 1603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) trace_analyzer::RateStats stats; 1613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!GetRateStats(rate_events, &stats, NULL)) { 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) LOG(ERROR) << "GetRateStats failed"; 1633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return false; 1643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) double mean_ms = stats.mean_us / 1000.0; 1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) double std_dev_ms = stats.standard_deviation_us / 1000.0; 1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string mean_and_error = base::StringPrintf("%f,%f", mean_ms, 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std_dev_ms); 1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) perf_test::PrintResultMeanAndError(test_name, 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetSuffixForTestFlags(), 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) event_name, 1723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mean_and_error, 1733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) unit, 1743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) true); 1753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return true; 1763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void RunTest(const std::string& test_name) { 1793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (HasFlag(kUseGpu) && !IsGpuAvailable()) { 1803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) LOG(WARNING) << 1813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) "Test skipped: requires gpu. Pass --enable-gpu on the command " 1823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) "line if use of GPU is desired."; 1833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string json_events; 187f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(tracing::BeginTracing("gpu,mirroring")); 1883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string page = "performance.html"; 1893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) page += HasFlag(kTestThroughWebRTC) ? "?WebRTC=1" : "?WebRTC=0"; 1903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Ideally we'd like to run a higher capture rate when vsync is disabled, 1913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // but libjingle currently doesn't allow that. 1923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // page += HasFlag(kDisableVsync) ? "&fps=300" : "&fps=30"; 1933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) page += "&fps=30"; 1945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(RunExtensionSubtest("tab_capture", page)) << message_; 1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_TRUE(tracing::EndTracing(&json_events)); 1963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<trace_analyzer::TraceAnalyzer> analyzer; 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) analyzer.reset(trace_analyzer::TraceAnalyzer::Create(json_events)); 1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // The printed result will be the average time between frames in the 2003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // browser window. 201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool gpu_frames = PrintResults( 202f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) analyzer.get(), 203f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) test_name, 204f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "RenderWidget::didCommitAndDrawCompositorFrame", 205f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) "ms"); 206f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(gpu_frames); 2073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // This prints out the average time between capture events. 2093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // As the capture frame rate is capped at 30fps, this score 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // cannot get any better than (lower) 33.33 ms. 2113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(PrintResults(analyzer.get(), 2123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) test_name, 2133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) "Capture", 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "ms")); 2153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 2173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace 2193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 220f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(TabCapturePerformanceTest, Performance) { 2213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) RunTest("TabCapturePerformance"); 2223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 2233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Note: First argument is optional and intentionally left blank. 2253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// (it's a prefix for the generated test cases) 2263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)INSTANTIATE_TEST_CASE_P( 2273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) , 2283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TabCapturePerformanceTest, 2293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) testing::Values( 2303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 0, 2313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kUseGpu | kForceGpuComposited, 2323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kDisableVsync, 2333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kDisableVsync | kUseGpu | kForceGpuComposited, 2343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kTestThroughWebRTC, 2353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kTestThroughWebRTC | kUseGpu | kForceGpuComposited, 2363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kTestThroughWebRTC | kDisableVsync, 2373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kTestThroughWebRTC | kDisableVsync | kUseGpu | kForceGpuComposited)); 2383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(USE_AURA) 2403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// TODO(hubbe): 2413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// These are temporary tests for the purpose of determining what the 2423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// appropriate scaling quality is. Once that has been determined, 2433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// these tests will be removed. 2443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)const int kScalingTestBase = 2463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kTestThroughWebRTC | kDisableVsync | kUseGpu | kForceGpuComposited; 2473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)INSTANTIATE_TEST_CASE_P( 2493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ScalingTests, 2503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TabCapturePerformanceTest, 2513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) testing::Values( 2523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScalingTestBase | kScaleQualityFast, 2533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScalingTestBase | kScaleQualityGood, 2543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScalingTestBase | kScaleQualityBest, 2553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScalingTestBase | kScaleQualityFast | kSmallWindow, 2563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScalingTestBase | kScaleQualityGood | kSmallWindow, 2573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kScalingTestBase | kScaleQualityBest | kSmallWindow)); 2583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // USE_AURA 260