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

Unified Diff: chrome/browser/automation/testing_automation_provider.cc

Issue 11667030: Add GPU memory usage contents browser test (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove extraneous comments Created 7 years, 12 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
Index: chrome/browser/automation/testing_automation_provider.cc
diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc
index 012fb4922c3121bcfa754f7a63a1ea36ffb120fb..0dd3096cc1b39b3af0e102e2d945442f46161039 100644
--- a/chrome/browser/automation/testing_automation_provider.cc
+++ b/chrome/browser/automation/testing_automation_provider.cc
@@ -128,6 +128,8 @@
#include "content/public/browser/child_process_data.h"
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/geolocation.h"
+#include "content/public/browser/gpu_data_manager.h"
+#include "content/public/browser/gpu_data_manager_observer.h"
#include "content/public/browser/interstitial_page.h"
#include "content/public/browser/interstitial_page_delegate.h"
#include "content/public/browser/navigation_entry.h"
@@ -1972,6 +1974,8 @@ void TestingAutomationProvider::BuildJSONHandlerMaps() {
&TestingAutomationProvider::GetV8HeapStats;
browser_handler_map_["GetFPS"] =
&TestingAutomationProvider::GetFPS;
+ browser_handler_map_["GetGpuMemoryUsage"] =
+ &TestingAutomationProvider::GetGpuMemoryUsage;
browser_handler_map_["IsFullscreenForBrowser"] =
&TestingAutomationProvider::IsFullscreenForBrowser;
@@ -5101,6 +5105,51 @@ void TestingAutomationProvider::GetFPS(
render_view->Send(new ChromeViewMsg_GetFPS(routing_id));
}
+class TestingAutomationGpuDataManagerObserver
+ : public content::GpuDataManagerObserver {
+ public:
+ TestingAutomationGpuDataManagerObserver(
+ TestingAutomationProvider* provider,
+ IPC::Message* reply_message)
+ : provider_(provider),
+ reply_message_(reply_message) {
+ content::GpuDataManager::GetInstance()->AddObserver(this);
+ }
+
+ virtual ~TestingAutomationGpuDataManagerObserver() {
+ content::GpuDataManager::GetInstance()->RemoveObserver(this);
+ }
+
+ virtual void OnGpuInfoUpdate() OVERRIDE {}
+
+ virtual void OnVideoMemoryUsageStatsUpdate(
+ const content::GPUVideoMemoryUsageStats& video_memory_usage_stats)
+ OVERRIDE {
+ DictionaryValue dict;
+ dict.SetInteger("gpu_memory_mbytes_allocated", static_cast<int>(
+ video_memory_usage_stats.bytes_allocated/1048576));
+ AutomationJSONReply(provider_, reply_message_).SendSuccess(&dict);
+ delete this;
+ }
+
+ private:
+ TestingAutomationProvider* provider_;
+ IPC::Message* reply_message_;
+};
+
+void TestingAutomationProvider::GetGpuMemoryUsage(
+ Browser* browser,
+ DictionaryValue* args,
+ IPC::Message* reply_message) {
+ if (!content::GpuDataManager::GetInstance()->GpuAccessAllowed()) {
+ AutomationJSONReply(this, reply_message).SendError("Cannot access GPU");
+ return;
+ }
+ // This observer will delete itself.
+ new TestingAutomationGpuDataManagerObserver(this, reply_message);
+ content::GpuDataManager::GetInstance()->RequestVideoMemoryUsageStatsUpdate();
+}
+
void TestingAutomationProvider::IsFullscreenForBrowser(Browser* browser,
base::DictionaryValue* args,
IPC::Message* reply_message) {

Powered by Google App Engine
This is Rietveld 408576698