Chromium Code Reviews| Index: chrome/browser/renderer_host/chrome_render_message_filter.cc |
| diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc |
| index 2d69147aef00a23b312a685d2ddc20a843812c91..a4910f4a7901fb79d4a2968a72506dc553403062 100644 |
| --- a/chrome/browser/renderer_host/chrome_render_message_filter.cc |
| +++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc |
| @@ -8,6 +8,8 @@ |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| +#include "base/command_line.h" |
| +#include "base/metrics/field_trial.h" |
| #include "base/metrics/histogram.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/automation/automation_resource_message_filter.h" |
| @@ -23,10 +25,12 @@ |
| #include "chrome/browser/extensions/event_router.h" |
| #include "chrome/browser/extensions/extension_process_manager.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| +#include "chrome/browser/google/google_util.h" |
| #include "chrome/browser/net/chrome_url_request_context.h" |
| #include "chrome/browser/net/predictor.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/task_manager/task_manager.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/extensions/api/i18n/default_locale_handler.h" |
| #include "chrome/common/extensions/extension_file_util.h" |
| #include "chrome/common/extensions/extension_messages.h" |
| @@ -147,6 +151,8 @@ bool ChromeRenderMessageFilter::OnMessageReceived(const IPC::Message& message, |
| OnCanTriggerClipboardRead) |
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_CanTriggerClipboardWrite, |
| OnCanTriggerClipboardWrite) |
| + IPC_MESSAGE_HANDLER(ChromeViewHostMsg_IsWebGLDebugRendererInfoAllowed, |
| + OnIsWebGLDebugRendererInfoAllowed) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| @@ -626,6 +632,28 @@ void ChromeRenderMessageFilter::OnCanTriggerClipboardWrite( |
| origin, render_process_id_, APIPermission::kClipboardWrite)); |
| } |
| +void ChromeRenderMessageFilter::OnIsWebGLDebugRendererInfoAllowed( |
| + const GURL& origin, bool* allowed) { |
| + *allowed = false; |
| + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| + if (command_line.HasSwitch(switches::kDisableWebGLDebugRendererInfo)) |
| + return; |
| + |
| + // TODO(zmo): in this experimental stage, we only expose WebGL extension |
| + // WEBGL_debug_renderer_info for Google domains. Once we finish the experiment |
| + // and make a decision, this extension should be avaiable to all or none. |
| + if (!google_util::IsGoogleDomainUrl(origin, google_util::ALLOW_SUBDOMAIN, |
|
jln (very slow on Chromium)
2013/10/30 21:17:07
Please, don't construct a whitelist without making
|
| + google_util::ALLOW_NON_STANDARD_PORTS)) { |
| + return; |
| + } |
| + |
| + const char kWebGLDebugRendererInfoFieldTrialName[] = "WebGLDebugRendererInfo"; |
| + const char kWebGLDebugRendererInfoFieldTrialEnabledName[] = "enabled"; |
| + *allowed = (base::FieldTrialList::FindFullName( |
| + kWebGLDebugRendererInfoFieldTrialName) == |
| + kWebGLDebugRendererInfoFieldTrialEnabledName); |
| +} |
| + |
| void ChromeRenderMessageFilter::OnGetCookies( |
| const GURL& url, |
| const GURL& first_party_for_cookies, |