Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5160)

Unified Diff: chrome/test/gpu/gpu_feature_browsertest.cc

Issue 482853002: Remove gpu_feature_browsertest.cc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | content/common/gpu/image_transport_surface_fbo_mac.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/gpu/gpu_feature_browsertest.cc
diff --git a/chrome/test/gpu/gpu_feature_browsertest.cc b/chrome/test/gpu/gpu_feature_browsertest.cc
deleted file mode 100644
index ec27223f621aca888a49034e4a231ec58eb9f12a..0000000000000000000000000000000000000000
--- a/chrome/test/gpu/gpu_feature_browsertest.cc
+++ /dev/null
@@ -1,500 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/command_line.h"
-#include "base/file_util.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/path_service.h"
-#include "base/strings/stringprintf.h"
-#include "base/test/trace_event_analyzer.h"
-#include "base/version.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/tracing.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "content/public/browser/gpu_data_manager.h"
-#include "content/public/common/content_client.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/test/browser_test_utils.h"
-#include "gpu/config/gpu_feature_type.h"
-#include "gpu/config/gpu_info.h"
-#include "gpu/config/gpu_test_config.h"
-#include "net/base/filename_util.h"
-#include "ui/gl/gl_implementation.h"
-
-#if defined(OS_WIN)
-#include "base/win/windows_version.h"
-#endif
-
-using content::GpuDataManager;
-using gpu::GpuFeatureType;
-using trace_analyzer::Query;
-using trace_analyzer::TraceAnalyzer;
-using trace_analyzer::TraceEventVector;
-
-namespace {
-
-const char kAcceleratedCanvasCreationEvent[] = "Canvas2DLayerBridgeCreation";
-const char kWebGLCreationEvent[] = "DrawingBufferCreation";
-
-class FakeContentClient : public content::ContentClient {
-};
-
-class GpuFeatureTest : public InProcessBrowserTest {
- public:
- GpuFeatureTest() : category_patterns_("test_gpu") {}
-
- virtual void SetUp() OVERRIDE {
- content::SetContentClient(&content_client_);
- }
-
- virtual void TearDown() OVERRIDE {
- content::SetContentClient(NULL);
- }
-
- virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
- base::FilePath test_dir;
- ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir));
- gpu_test_dir_ = test_dir.AppendASCII("gpu");
- }
-
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
- command_line->AppendSwitch(switches::kDisablePopupBlocking);
- command_line->AppendSwitchASCII(switches::kWindowSize, "400,300");
- }
-
- void SetupBlacklist(const std::string& json_blacklist) {
- gpu::GPUInfo gpu_info;
- GpuDataManager::GetInstance()->InitializeForTesting(
- json_blacklist, gpu_info);
- }
-
- // If expected_reply is NULL, we don't check the reply content.
- void RunTest(const base::FilePath& url,
- const char* expected_reply,
- bool new_tab) {
-#if defined(OS_LINUX) && !defined(NDEBUG)
- // Bypass tests on GPU Linux Debug bots.
- if (gfx::GetGLImplementation() != gfx::kGLImplementationOSMesaGL)
- return;
-#endif
-
- base::FilePath test_path;
- test_path = gpu_test_dir_.Append(url);
- ASSERT_TRUE(base::PathExists(test_path))
- << "Missing test file: " << test_path.value();
-
- content::DOMMessageQueue message_queue;
- if (new_tab) {
- ui_test_utils::NavigateToURLWithDisposition(
- browser(), net::FilePathToFileURL(test_path),
- NEW_FOREGROUND_TAB, ui_test_utils::BROWSER_TEST_NONE);
- } else {
- ui_test_utils::NavigateToURL(
- browser(), net::FilePathToFileURL(test_path));
- }
-
- std::string result;
- // Wait for message indicating the test has finished running.
- ASSERT_TRUE(message_queue.WaitForMessage(&result));
- if (expected_reply)
- EXPECT_STREQ(expected_reply, result.c_str());
- }
-
- // Open the URL and check the trace stream for the given event.
- void RunEventTest(const base::FilePath& url,
- const char* event_name = NULL,
- bool event_expected = false) {
-#if defined(OS_LINUX) && !defined(NDEBUG)
- // Bypass tests on GPU Linux Debug bots.
- if (gfx::GetGLImplementation() != gfx::kGLImplementationOSMesaGL)
- return;
-#endif
-
- ASSERT_TRUE(tracing::BeginTracing(category_patterns_));
-
- // Have to use a new tab for the blacklist to work.
- RunTest(url, NULL, true);
-
- ASSERT_TRUE(tracing::EndTracing(&trace_events_json_));
-
- analyzer_.reset(TraceAnalyzer::Create(trace_events_json_));
- analyzer_->AssociateBeginEndEvents();
- TraceEventVector events;
-
- if (!event_name)
- return;
-
- size_t event_count =
- analyzer_->FindEvents(Query::EventNameIs(event_name), &events);
-
- if (event_expected)
- EXPECT_GT(event_count, 0U);
- else
- EXPECT_EQ(event_count, 0U);
- }
-
- // Trigger a resize of the chrome window, and use tracing to wait for the
- // given |wait_event|.
- bool ResizeAndWait(const gfx::Rect& new_bounds,
- const char* category_patterns,
- const char* wait_category,
- const char* wait_event) {
- if (!tracing::BeginTracingWithWatch(category_patterns, wait_category,
- wait_event, 1))
- return false;
- browser()->window()->SetBounds(new_bounds);
- if (!tracing::WaitForWatchEvent(base::TimeDelta()))
- return false;
- if (!tracing::EndTracing(&trace_events_json_))
- return false;
- analyzer_.reset(TraceAnalyzer::Create(trace_events_json_));
- analyzer_->AssociateBeginEndEvents();
- return true;
- }
-
- protected:
- base::FilePath gpu_test_dir_;
- scoped_ptr<TraceAnalyzer> analyzer_;
- std::string category_patterns_;
- std::string trace_events_json_;
- FakeContentClient content_client_;
-};
-
-class GpuFeaturePixelTest : public GpuFeatureTest {
- protected:
- virtual void SetUp() OVERRIDE {
- EnablePixelOutput();
- GpuFeatureTest::SetUp();
- }
-};
-
-class GpuCompositingBlockedTest : public GpuFeatureTest {
- public:
- virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
- GpuFeatureTest::SetUpInProcessBrowserTestFixture();
- const std::string json_blacklist =
- "{\n"
- " \"name\": \"gpu blacklist\",\n"
- " \"version\": \"1.0\",\n"
- " \"entries\": [\n"
- " {\n"
- " \"id\": 1,\n"
- " \"features\": [\n"
- " \"gpu_compositing\"\n"
- " ]\n"
- " }\n"
- " ]\n"
- "}";
- SetupBlacklist(json_blacklist);
- }
-};
-
-IN_PROC_BROWSER_TEST_F(GpuCompositingBlockedTest, GpuCompositingBlocked) {
- EXPECT_TRUE(GpuDataManager::GetInstance()->IsFeatureBlacklisted(
- gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING));
-}
-
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, WebGLAllowed) {
- EXPECT_FALSE(GpuDataManager::GetInstance()->IsFeatureBlacklisted(
- gpu::GPU_FEATURE_TYPE_WEBGL));
-
- // The below times out: http://crbug.com/166060
-#if 0
- const base::FilePath url(FILE_PATH_LITERAL("feature_webgl.html"));
- RunEventTest(url, kWebGLCreationEvent, true);
-#endif
-}
-
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, WebGLBlocked) {
- const std::string json_blacklist =
- "{\n"
- " \"name\": \"gpu blacklist\",\n"
- " \"version\": \"1.0\",\n"
- " \"entries\": [\n"
- " {\n"
- " \"id\": 1,\n"
- " \"features\": [\n"
- " \"webgl\"\n"
- " ]\n"
- " }\n"
- " ]\n"
- "}";
- SetupBlacklist(json_blacklist);
- EXPECT_TRUE(GpuDataManager::GetInstance()->IsFeatureBlacklisted(
- gpu::GPU_FEATURE_TYPE_WEBGL));
-
- const base::FilePath url(FILE_PATH_LITERAL("feature_webgl.html"));
- RunEventTest(url, kWebGLCreationEvent, false);
-}
-
-class WebGLTest : public GpuFeatureTest {
- public:
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
- GpuFeatureTest::SetUpCommandLine(command_line);
-#if !defined(OS_ANDROID)
- // On Android, WebGL is disabled by default
- command_line->AppendSwitch(switches::kDisableExperimentalWebGL);
-#endif
- }
-};
-
-IN_PROC_BROWSER_TEST_F(WebGLTest, WebGLDisabled) {
- const base::FilePath url(FILE_PATH_LITERAL("feature_webgl.html"));
- RunEventTest(url, kWebGLCreationEvent, false);
-}
-
-// This test is oblivious to the fact that multisample could be blacklisted on
-// some configurations. Previously disabled on GOOGLE_CHROME_BUILD and
-// on OS_MACOSX: http://crbug.com/314745
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, DISABLED_MultisamplingAllowed) {
- if (gpu::GPUTestBotConfig::GpuBlacklistedOnBot())
- return;
- // Multisampling is not supported if running on top of osmesa.
- if (gfx::GetGLImplementation() == gfx::kGLImplementationOSMesaGL)
- return;
- // Linux Intel uses mesa driver, where multisampling is not supported.
- // Multisampling is also not supported on virtualized mac os.
- std::vector<std::string> configs;
- configs.push_back("LINUX INTEL");
- configs.push_back("MAC VMWARE");
- if (gpu::GPUTestBotConfig::CurrentConfigMatches(configs))
- return;
-
- const base::FilePath url(FILE_PATH_LITERAL("feature_multisampling.html"));
- RunTest(url, "\"TRUE\"", true);
-}
-
-class WebGLMultisamplingTest : public GpuFeatureTest {
- public:
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
- GpuFeatureTest::SetUpCommandLine(command_line);
- command_line->AppendSwitch("disable_multisampling");
- }
-};
-
-IN_PROC_BROWSER_TEST_F(WebGLMultisamplingTest, MultisamplingDisabled) {
- // Multisampling fails on virtualized mac os.
- if (gpu::GPUTestBotConfig::CurrentConfigMatches("MAC VMWARE"))
- return;
-
- const base::FilePath url(FILE_PATH_LITERAL("feature_multisampling.html"));
- RunTest(url, "\"FALSE\"", true);
-}
-
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, Canvas2DAllowed) {
- // Accelerated canvas 2D is not supported on XP.
- if (gpu::GPUTestBotConfig::CurrentConfigMatches("XP"))
- return;
-
- enum Canvas2DState {
- ENABLED,
- BLACKLISTED, // Disabled via the blacklist.
- DISABLED, // Not disabled via the blacklist, but expected to be disabled
- // by configuration.
- } expected_state = ENABLED;
-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
- // Blacklist rule #24 disables accelerated_2d_canvas on Linux.
- expected_state = BLACKLISTED;
-#elif defined(OS_WIN)
- // Blacklist rule #67 disables accelerated_2d_canvas on XP.
- if (base::win::GetVersion() < base::win::VERSION_VISTA)
- expected_state = BLACKLISTED;
-#endif
-
- if (gpu::GPUTestBotConfig::GpuBlacklistedOnBot())
- expected_state = BLACKLISTED;
-
-#if defined(USE_AURA)
- // Canvas 2D is always disabled in software compositing mode, make sure it is
- // marked as such if it wasn't blacklisted already.
- if (expected_state == ENABLED &&
- !content::GpuDataManager::GetInstance()->CanUseGpuBrowserCompositor()) {
- expected_state = DISABLED;
- }
-#endif
-
- EXPECT_EQ(expected_state == BLACKLISTED,
- GpuDataManager::GetInstance()->IsFeatureBlacklisted(
- gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
-
- const base::FilePath url(FILE_PATH_LITERAL("feature_canvas2d.html"));
- RunEventTest(url, kAcceleratedCanvasCreationEvent, expected_state == ENABLED);
-}
-
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, Canvas2DBlocked) {
- const std::string json_blacklist =
- "{\n"
- " \"name\": \"gpu blacklist\",\n"
- " \"version\": \"1.0\",\n"
- " \"entries\": [\n"
- " {\n"
- " \"id\": 1,\n"
- " \"features\": [\n"
- " \"accelerated_2d_canvas\"\n"
- " ]\n"
- " }\n"
- " ]\n"
- "}";
- SetupBlacklist(json_blacklist);
- EXPECT_TRUE(GpuDataManager::GetInstance()->IsFeatureBlacklisted(
- gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
-
- const base::FilePath url(FILE_PATH_LITERAL("feature_canvas2d.html"));
- RunEventTest(url, kAcceleratedCanvasCreationEvent, false);
-}
-
-class Canvas2DDisabledTest : public GpuFeatureTest {
- public:
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
- GpuFeatureTest::SetUpCommandLine(command_line);
- command_line->AppendSwitch(switches::kDisableAccelerated2dCanvas);
- }
-};
-
-IN_PROC_BROWSER_TEST_F(Canvas2DDisabledTest, Canvas2DDisabled) {
- const base::FilePath url(FILE_PATH_LITERAL("feature_canvas2d.html"));
- RunEventTest(url, kAcceleratedCanvasCreationEvent, false);
-}
-
-IN_PROC_BROWSER_TEST_F(GpuFeaturePixelTest,
- CanOpenPopupAndRenderWithWebGLCanvas) {
- if (gpu::GPUTestBotConfig::GpuBlacklistedOnBot())
- return;
-
- const base::FilePath url(FILE_PATH_LITERAL("webgl_popup.html"));
- RunTest(url, "\"SUCCESS\"", false);
-}
-
-// crbug.com/176466
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest,
- DISABLED_CanOpenPopupAndRenderWith2DCanvas) {
- const base::FilePath url(FILE_PATH_LITERAL("canvas_popup.html"));
- RunTest(url, "\"SUCCESS\"", false);
-}
-
-#if defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_MACOSX)
-// http://crbug.com/162343: flaky on Windows and Mac, failing on ChromiumOS.
-#define MAYBE_RafNoDamage DISABLED_RafNoDamage
-#else
-#define MAYBE_RafNoDamage RafNoDamage
-#endif
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, MAYBE_RafNoDamage) {
- category_patterns_ = "-test_*";
- const base::FilePath url(FILE_PATH_LITERAL("feature_raf_no_damage.html"));
- RunEventTest(url);
-
- if (!analyzer_.get())
- return;
-
- // Search for matching name on begin event or async_begin event (any begin).
- Query query_raf =
- (Query::EventPhaseIs(TRACE_EVENT_PHASE_BEGIN) ||
- Query::EventPhaseIs(TRACE_EVENT_PHASE_ASYNC_BEGIN)) &&
- Query::EventNameIs("___RafWithNoDamage___");
- TraceEventVector events;
- size_t num_events = analyzer_->FindEvents(query_raf, &events);
-
- trace_analyzer::RateStats stats;
- trace_analyzer::RateStatsOptions stats_options;
- stats_options.trim_min = stats_options.trim_max = num_events / 10;
- EXPECT_TRUE(trace_analyzer::GetRateStats(events, &stats, &stats_options));
-
- LOG(INFO) << "Number of RAFs: " << num_events <<
- " Mean: " << stats.mean_us <<
- " Min: " << stats.min_us <<
- " Max: " << stats.max_us <<
- " StdDev: " << stats.standard_deviation_us;
-
- // Expect that the average time between RAFs is more than 15ms. That will
- // indicate that the renderer is not simply spinning on RAF.
- EXPECT_GT(stats.mean_us, 15000.0);
-
- // Print out the trace events upon error to debug failures.
- if (stats.mean_us <= 15000.0) {
- fprintf(stderr, "\n\nTRACE JSON:\n\n%s\n\n", trace_events_json_.c_str());
- }
-}
-
-#if defined(OS_MACOSX)
-IN_PROC_BROWSER_TEST_F(GpuFeatureTest, IOSurfaceReuse) {
- if (gpu::GPUTestBotConfig::GpuBlacklistedOnBot())
- return;
-
- const base::FilePath url(
- FILE_PATH_LITERAL("feature_compositing_static.html"));
- base::FilePath test_path = gpu_test_dir_.Append(url);
- ASSERT_TRUE(base::PathExists(test_path))
- << "Missing test file: " << test_path.value();
-
- ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(test_path));
-
- LOG(INFO) << "did navigate";
- gfx::Rect bounds = browser()->window()->GetBounds();
- gfx::Rect new_bounds = bounds;
-
- const char* create_event = "IOSurfaceImageTransportSurface::CreateIOSurface";
- const char* resize_event = "IOSurfaceImageTransportSurface::OnResize";
- const char* draw_event = "CompositingIOSurfaceMac::DrawIOSurface";
- Query find_creates = Query::MatchBeginName(create_event);
- Query find_resizes = Query::MatchBeginName(resize_event) &&
- Query::EventHasNumberArg("old_width") &&
- Query::EventHasNumberArg("new_width");
- Query find_draws = Query::MatchBeginName(draw_event) &&
- Query::EventHasNumberArg("scale");
-
- const int roundup = 64;
- // A few resize values assuming a roundup of 64 pixels. The test will resize
- // by these values one at a time and verify that CreateIOSurface only happens
- // when the rounded width changes.
- int offsets[] = { 1, roundup - 1, roundup, roundup + 1, 2*roundup};
- int num_offsets = static_cast<int>(arraysize(offsets));
- int w_start = bounds.width();
-
- for (int offset_i = 0; offset_i < num_offsets; ++offset_i) {
- new_bounds.set_width(w_start + offsets[offset_i]);
- LOG(INFO) << "before wait";
- ASSERT_TRUE(ResizeAndWait(new_bounds, "gpu", "gpu", resize_event));
- LOG(INFO) << "after wait";
-
- TraceEventVector resize_events;
- analyzer_->FindEvents(find_resizes, &resize_events);
- LOG(INFO) << "num rezize events = " << resize_events.size();
- for (size_t resize_i = 0; resize_i < resize_events.size(); ++resize_i) {
- const trace_analyzer::TraceEvent* resize = resize_events[resize_i];
- // Was a create allowed:
- int old_width = resize->GetKnownArgAsInt("old_width");
- int new_width = resize->GetKnownArgAsInt("new_width");
- bool expect_create = (old_width/roundup != new_width/roundup ||
- old_width == 0);
- int expected_creates = expect_create ? 1 : 0;
-
- // Find the create event inside this resize event (if any). This will
- // determine if the resize triggered a reallocation of the IOSurface.
- double begin_time = resize->timestamp;
- double end_time = begin_time + resize->GetAbsTimeToOtherEvent();
- Query find_this_create = find_creates &&
- Query::EventTime() >= Query::Double(begin_time) &&
- Query::EventTime() <= Query::Double(end_time);
- TraceEventVector create_events;
- int num_creates = static_cast<int>(analyzer_->FindEvents(find_this_create,
- &create_events));
- EXPECT_EQ(expected_creates, num_creates);
-
- // For debugging failures, print out the width and height of each resize:
- LOG(INFO) <<
- base::StringPrintf(
- "%d (resize offset %d): IOSurface width %d -> %d; Creates %d "
- "Expected %d", offset_i, offsets[offset_i],
- old_width, new_width, num_creates, expected_creates);
- }
- }
- LOG(INFO) << "finished test";
-}
-#endif
-
-} // namespace
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | content/common/gpu/image_transport_surface_fbo_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698