Index: content/browser/gpu/gpu_process_host.cc |
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc |
index 8764010907cea33a8f5ed6bed108fd07ab166d0a..8727e61632ee8cffd2e5c80ec803cc53dd3f61e2 100644 |
--- a/content/browser/gpu/gpu_process_host.cc |
+++ b/content/browser/gpu/gpu_process_host.cc |
@@ -879,19 +879,25 @@ void GpuProcessHost::OnDidLoseContext(bool offscreen, |
return; |
} |
- GpuDataManagerImpl::DomainGuilt guilt; |
+ GpuDataManagerImpl::DomainGuilt guilt = |
+ GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN; |
switch (reason) { |
case gpu::error::kGuilty: |
guilt = GpuDataManagerImpl::DOMAIN_GUILT_KNOWN; |
break; |
+ // Treat most other error codes as though they had unknown provenance. |
+ // In practice this doesn't affect the user experience. A lost context |
+ // of either known or unknown guilt still causes user-level 3D APIs |
+ // (e.g. WebGL) to be blocked on that domain until the user manually |
+ // reenables them. |
case gpu::error::kUnknown: |
- guilt = GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN; |
+ case gpu::error::kOutOfMemory: |
+ case gpu::error::kMakeCurrentFailed: |
+ case gpu::error::kGpuChannelLost: |
+ case gpu::error::kInvalidGpuMessage: |
break; |
case gpu::error::kInnocent: |
return; |
- default: |
- NOTREACHED(); |
- return; |
} |
GpuDataManagerImpl::GetInstance()->BlockDomainFrom3DAPIs(url, guilt); |