1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_BROWSER_GPU_DATA_MANAGER_OBSERVER_H_ 6 #define CONTENT_PUBLIC_BROWSER_GPU_DATA_MANAGER_OBSERVER_H_ 7 8 #include "base/process/kill.h" 9 #include "content/common/content_export.h" 10 #include "content/public/common/gpu_memory_stats.h" 11 #include "content/public/common/three_d_api_types.h" 12 13 class GURL; 14 15 namespace content { 16 17 // Observers can register themselves via GpuDataManager::AddObserver, and 18 // can un-register with GpuDataManager::RemoveObserver. 19 class CONTENT_EXPORT GpuDataManagerObserver { 20 public: 21 // Called for any observers whenever there is a GPU info update. 22 virtual void OnGpuInfoUpdate() {} 23 24 // Called for any observers whenever there is a GPU video memory update. 25 virtual void OnVideoMemoryUsageStatsUpdate( 26 const GPUVideoMemoryUsageStats& video_memory_usage_stats) {} 27 28 // Indicates that client 3D APIs (Pepper 3D, WebGL) were just blocked on the 29 // given page, specifically because the GPU was reset recently. 30 virtual void DidBlock3DAPIs(const GURL& url, 31 int render_process_id, 32 int render_view_id, 33 ThreeDAPIType requester) {} 34 35 // Called for any observer when the GPU process crashed. 36 virtual void OnGpuProcessCrashed(base::TerminationStatus exit_code) {} 37 38 // Called for any observer when the system switches to a different GPU. 39 virtual void OnGpuSwitching() {} 40 41 protected: 42 virtual ~GpuDataManagerObserver() {} 43 }; 44 45 }; // namespace content 46 47 #endif // CONTENT_PUBLIC_BROWSER_GPU_DATA_MANAGER_OBSERVER_H_ 48