| Index: chrome/renderer/render_thread.cc
 | 
| ===================================================================
 | 
| --- chrome/renderer/render_thread.cc	(revision 68066)
 | 
| +++ chrome/renderer/render_thread.cc	(working copy)
 | 
| @@ -1079,18 +1079,27 @@
 | 
|  }
 | 
|  
 | 
|  void RenderThread::OnGpuChannelEstablished(
 | 
| -    const IPC::ChannelHandle& channel_handle, const GPUInfo& gpu_info) {
 | 
| +    const IPC::ChannelHandle& channel_handle,
 | 
| +    const GPUInfo& gpu_info,
 | 
| +    const GpuFeatureFlags& gpu_feature_flags) {
 | 
|  #if defined(OS_POSIX)
 | 
|    // If we received a ChannelHandle, register it now.
 | 
|    if (channel_handle.socket.fd >= 0)
 | 
|      IPC::AddChannelSocket(channel_handle.name, channel_handle.socket.fd);
 | 
|  #endif
 | 
|  
 | 
| -  gpu_channel_->set_gpu_info(gpu_info);
 | 
| -
 | 
|    if (channel_handle.name.size() != 0) {
 | 
| -    // Connect to the GPU process if a channel name was received.
 | 
| -    gpu_channel_->Connect(channel_handle.name);
 | 
| +    if (gpu_feature_flags.is_accelerated_2d_canvas_blacklisted() ||
 | 
| +        gpu_feature_flags.is_accelerated_compositing_blacklisted() ||
 | 
| +        gpu_feature_flags.is_webgl_blacklisted()) {
 | 
| +      // If any GPU feature is blacklisted, cancel the connection.
 | 
| +      gpu_channel_ = NULL;
 | 
| +    } else {
 | 
| +      // Connect to the GPU process if a channel name was received.
 | 
| +      gpu_channel_->set_gpu_info(gpu_info);
 | 
| +      gpu_channel_->set_gpu_feature_flags(gpu_feature_flags);
 | 
| +      gpu_channel_->Connect(channel_handle.name);
 | 
| +    }
 | 
|    } else {
 | 
|      // Otherwise cancel the connection.
 | 
|      gpu_channel_ = NULL;
 | 
| 
 |