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

Unified Diff: content/browser/gpu/gpu_memory_test.cc

Issue 11826022: Revert 175753 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 11 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 | « no previous file | content/common/gpu/gpu_memory_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/gpu/gpu_memory_test.cc
===================================================================
--- content/browser/gpu/gpu_memory_test.cc (revision 175756)
+++ content/browser/gpu/gpu_memory_test.cc (working copy)
@@ -1,178 +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/callback.h"
-#include "base/command_line.h"
-#include "base/path_service.h"
-#include "content/public/browser/gpu_data_manager.h"
-#include "content/public/browser/gpu_data_manager_observer.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/content_paths.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "content/shell/shell.h"
-#include "content/test/content_browser_test.h"
-#include "content/test/content_browser_test_utils.h"
-#include "gpu/command_buffer/service/gpu_switches.h"
-#include "net/base/net_util.h"
-
-namespace {
-
-// Run the tests with a memory limit of 256MB, and give
-// and extra 24MB of wiggle-room for over-allocation.
-const char* kMemoryLimitSwitch = "256";
-const size_t kMemoryLimit = 256;
-const size_t kSingleTabLimit = 128;
-const size_t kSingleTabMinimum = 64;
-const size_t kWiggleRoom = 24;
-
-// Observer to report GPU memory usage when requested.
-class GpuMemoryBytesAllocatedObserver
- : public content::GpuDataManagerObserver {
- public:
- GpuMemoryBytesAllocatedObserver()
- : bytes_allocated_(0) {
- }
-
- virtual ~GpuMemoryBytesAllocatedObserver() {
- }
-
- virtual void OnGpuInfoUpdate() OVERRIDE {}
-
- virtual void OnVideoMemoryUsageStatsUpdate(
- const content::GPUVideoMemoryUsageStats& video_memory_usage_stats)
- OVERRIDE {
- bytes_allocated_ = video_memory_usage_stats.bytes_allocated;
- message_loop_runner_->Quit();
- }
-
- size_t GetBytesAllocated() {
- message_loop_runner_ = new content::MessageLoopRunner;
- content::GpuDataManager::GetInstance()->AddObserver(this);
- content::GpuDataManager::GetInstance()->
- RequestVideoMemoryUsageStatsUpdate();
- message_loop_runner_->Run();
- content::GpuDataManager::GetInstance()->RemoveObserver(this);
- message_loop_runner_ = NULL;
- return bytes_allocated_;
- }
-
- private:
- size_t bytes_allocated_;
- scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
-};
-
-class GpuMemoryTest : public content::ContentBrowserTest {
- public:
- GpuMemoryTest()
- : allow_tests_to_run_(false),
- has_used_first_shell_(false) {
- }
- virtual ~GpuMemoryTest() {
- }
-
- virtual void SetUpInProcessBrowserTestFixture() {
- FilePath test_dir;
- ASSERT_TRUE(PathService::Get(content::DIR_TEST_DATA, &test_dir));
- gpu_test_dir_ = test_dir.AppendASCII("gpu");
- }
-
- virtual void SetUpCommandLine(CommandLine* command_line) {
- command_line->AppendSwitch(switches::kEnableLogging);
- command_line->AppendSwitch(switches::kForceCompositingMode);
- command_line->AppendSwitchASCII(switches::kForceGpuMemAvailableMb,
- kMemoryLimitSwitch);
- // Only run this on GPU bots for now. These tests should work with
- // any GPU process, but may be slow.
- if (command_line->HasSwitch(switches::kUseGpuInTests)) {
- allow_tests_to_run_ = true;
- }
- // Don't enable these tests on Android just yet (they use lots of memory and
- // may not be stable).
-#if defined(OS_ANDROID)
- allow_tests_to_run_ = false;
-#endif
- }
-
- enum PageType {
- PAGE_CSS3D,
- PAGE_WEBGL,
- };
-
- // Load a page and consume a specified amount of GPU memory.
- void LoadPage(content::Shell* shell_to_load,
- PageType page_type,
- size_t mb_to_use) {
- FilePath url;
- switch (page_type) {
- case PAGE_CSS3D:
- url = gpu_test_dir_.AppendASCII("mem_css3d.html");
- break;
- case PAGE_WEBGL:
- url = gpu_test_dir_.AppendASCII("mem_webgl.html");
- break;
- }
-
- content::NavigateToURL(shell_to_load, net::FilePathToFileURL(url));
- std::ostringstream js_call;
- js_call << "useGpuMemory(";
- js_call << mb_to_use;
- js_call << ");";
- content::DOMMessageQueue message_queue;
- std::string message;
- ASSERT_TRUE(content::ExecuteScript(
- shell_to_load->web_contents(), js_call.str()));
- ASSERT_TRUE(message_queue.WaitForMessage(&message));
- EXPECT_EQ("\"DONE_USE_GPU_MEMORY\"", message);
- }
-
- // Create a new tab.
- content::Shell* CreateNewTab() {
- // The ContentBrowserTest will create one shell by default, use that one
- // first so that we don't confuse the memory manager into thinking there
- // are more windows than there are.
- content::Shell* new_shell =
- has_used_first_shell_ ? CreateBrowser() : shell();
- has_used_first_shell_ = true;
- visible_shells_.insert(new_shell);
- return new_shell;
- }
-
- void SetTabBackgrounded(content::Shell* shell_to_background) {
- ASSERT_TRUE(
- visible_shells_.find(shell_to_background) != visible_shells_.end());
- visible_shells_.erase(shell_to_background);
- shell_to_background->web_contents()->WasHidden();
- }
-
- size_t GetMemoryUsageMbytes() {
- // TODO: This should wait until all effects of memory management complete.
- // We will need to wait until all
- // 1. pending commits from the main thread to the impl thread in the
- // compositor complete (for visible compositors).
- // 2. allocations that the renderer's impl thread will make due to the
- // compositor and WebGL are completed.
- // 3. pending GpuMemoryManager::Manage() calls to manage are made.
- // 4. renderers' OnMemoryAllocationChanged callbacks in response to
- // manager are made.
- // Each step in this sequence can cause trigger the next (as a 1-2-3-4-1
- // cycle), so we will need to pump this cycle until it stabilizes.
- GpuMemoryBytesAllocatedObserver observer;
- observer.GetBytesAllocated();
- return observer.GetBytesAllocated() / 1048576;
- }
-
- bool AllowTestsToRun() const {
- return allow_tests_to_run_;
- }
-
- private:
- bool allow_tests_to_run_;
- std::set<content::Shell*> visible_shells_;
- bool has_used_first_shell_;
- FilePath gpu_test_dir_;
-};
-
-} // namespace
« no previous file with comments | « no previous file | content/common/gpu/gpu_memory_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698