| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/plugin/webplugin_delegate_stub.h" | 5 #include "chrome/plugin/webplugin_delegate_stub.h" |
| 6 | 6 |
| 7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "chrome/common/child_process_logging.h" | 10 #include "chrome/common/child_process_logging.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" | 21 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" |
| 22 #include "webkit/plugins/npapi/webplugin_delegate_impl.h" | 22 #include "webkit/plugins/npapi/webplugin_delegate_impl.h" |
| 23 #include "webkit/glue/webcursor.h" | 23 #include "webkit/glue/webcursor.h" |
| 24 | 24 |
| 25 #if defined(OS_WIN) | 25 #if defined(OS_WIN) |
| 26 #include "base/scoped_ptr.h" | 26 #include "base/scoped_ptr.h" |
| 27 #include "printing/native_metafile_factory.h" | 27 #include "printing/native_metafile_factory.h" |
| 28 #include "printing/native_metafile.h" | 28 #include "printing/native_metafile.h" |
| 29 #endif // defined(OS_WIN) | 29 #endif // defined(OS_WIN) |
| 30 | 30 |
| 31 #if defined(ENABLE_GPU) |
| 32 #include "app/gfx/gl/gl_context.h" |
| 33 #endif |
| 34 |
| 31 using WebKit::WebBindings; | 35 using WebKit::WebBindings; |
| 32 using WebKit::WebCursorInfo; | 36 using WebKit::WebCursorInfo; |
| 33 using webkit::npapi::WebPlugin; | 37 using webkit::npapi::WebPlugin; |
| 34 using webkit::npapi::WebPluginResourceClient; | 38 using webkit::npapi::WebPluginResourceClient; |
| 35 | 39 |
| 36 class FinishDestructionTask : public Task { | 40 class FinishDestructionTask : public Task { |
| 37 public: | 41 public: |
| 38 FinishDestructionTask(webkit::npapi::WebPluginDelegateImpl* delegate, | 42 FinishDestructionTask(webkit::npapi::WebPluginDelegateImpl* delegate, |
| 39 WebPlugin* webplugin) | 43 WebPlugin* webplugin) |
| 40 : delegate_(delegate), webplugin_(webplugin) { | 44 : delegate_(delegate), webplugin_(webplugin) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 61 delegate_(NULL), | 65 delegate_(NULL), |
| 62 webplugin_(NULL), | 66 webplugin_(NULL), |
| 63 in_destructor_(false) { | 67 in_destructor_(false) { |
| 64 DCHECK(channel); | 68 DCHECK(channel); |
| 65 } | 69 } |
| 66 | 70 |
| 67 WebPluginDelegateStub::~WebPluginDelegateStub() { | 71 WebPluginDelegateStub::~WebPluginDelegateStub() { |
| 68 in_destructor_ = true; | 72 in_destructor_ = true; |
| 69 child_process_logging::SetActiveURL(page_url_); | 73 child_process_logging::SetActiveURL(page_url_); |
| 70 | 74 |
| 75 #if defined(ENABLE_GPU) |
| 76 // Make sure there is no command buffer before destroying the window handle. |
| 77 // The GPU service code might otherwise asynchronously perform an operation |
| 78 // using the window handle. |
| 79 command_buffer_stub_.reset(); |
| 80 #endif |
| 81 |
| 71 if (channel_->in_send()) { | 82 if (channel_->in_send()) { |
| 72 // The delegate or an npobject is in the callstack, so don't delete it | 83 // The delegate or an npobject is in the callstack, so don't delete it |
| 73 // right away. | 84 // right away. |
| 74 MessageLoop::current()->PostNonNestableTask(FROM_HERE, | 85 MessageLoop::current()->PostNonNestableTask(FROM_HERE, |
| 75 new FinishDestructionTask(delegate_, webplugin_)); | 86 new FinishDestructionTask(delegate_, webplugin_)); |
| 76 } else { | 87 } else { |
| 77 // Safe to delete right away. | 88 // Safe to delete right away. |
| 78 if (delegate_) | 89 if (delegate_) |
| 79 delegate_->PluginDestroyed(); | 90 delegate_->PluginDestroyed(); |
| 80 | 91 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 OnDidReceiveManualResponse) | 137 OnDidReceiveManualResponse) |
| 127 IPC_MESSAGE_HANDLER(PluginMsg_DidReceiveManualData, OnDidReceiveManualData) | 138 IPC_MESSAGE_HANDLER(PluginMsg_DidReceiveManualData, OnDidReceiveManualData) |
| 128 IPC_MESSAGE_HANDLER(PluginMsg_DidFinishManualLoading, | 139 IPC_MESSAGE_HANDLER(PluginMsg_DidFinishManualLoading, |
| 129 OnDidFinishManualLoading) | 140 OnDidFinishManualLoading) |
| 130 IPC_MESSAGE_HANDLER(PluginMsg_DidManualLoadFail, OnDidManualLoadFail) | 141 IPC_MESSAGE_HANDLER(PluginMsg_DidManualLoadFail, OnDidManualLoadFail) |
| 131 IPC_MESSAGE_HANDLER(PluginMsg_InstallMissingPlugin, OnInstallMissingPlugin) | 142 IPC_MESSAGE_HANDLER(PluginMsg_InstallMissingPlugin, OnInstallMissingPlugin) |
| 132 IPC_MESSAGE_HANDLER(PluginMsg_HandleURLRequestReply, | 143 IPC_MESSAGE_HANDLER(PluginMsg_HandleURLRequestReply, |
| 133 OnHandleURLRequestReply) | 144 OnHandleURLRequestReply) |
| 134 IPC_MESSAGE_HANDLER(PluginMsg_HTTPRangeRequestReply, | 145 IPC_MESSAGE_HANDLER(PluginMsg_HTTPRangeRequestReply, |
| 135 OnHTTPRangeRequestReply) | 146 OnHTTPRangeRequestReply) |
| 147 IPC_MESSAGE_HANDLER(PluginMsg_CreateCommandBuffer, |
| 148 OnCreateCommandBuffer) |
| 149 IPC_MESSAGE_HANDLER(PluginMsg_DestroyCommandBuffer, |
| 150 OnDestroyCommandBuffer) |
| 136 #if defined(OS_MACOSX) | 151 #if defined(OS_MACOSX) |
| 137 IPC_MESSAGE_HANDLER(PluginMsg_SetFakeAcceleratedSurfaceWindowHandle, | 152 IPC_MESSAGE_HANDLER(PluginMsg_SetFakeAcceleratedSurfaceWindowHandle, |
| 138 OnSetFakeAcceleratedSurfaceWindowHandle) | 153 OnSetFakeAcceleratedSurfaceWindowHandle) |
| 139 #endif | 154 #endif |
| 140 IPC_MESSAGE_UNHANDLED(handled = false) | 155 IPC_MESSAGE_UNHANDLED(handled = false) |
| 141 IPC_END_MESSAGE_MAP() | 156 IPC_END_MESSAGE_MAP() |
| 142 | 157 |
| 143 if (!in_destructor_) | 158 if (!in_destructor_) |
| 144 Release(); | 159 Release(); |
| 145 | 160 |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 } | 409 } |
| 395 | 410 |
| 396 void WebPluginDelegateStub::OnDidManualLoadFail() { | 411 void WebPluginDelegateStub::OnDidManualLoadFail() { |
| 397 delegate_->DidManualLoadFail(); | 412 delegate_->DidManualLoadFail(); |
| 398 } | 413 } |
| 399 | 414 |
| 400 void WebPluginDelegateStub::OnInstallMissingPlugin() { | 415 void WebPluginDelegateStub::OnInstallMissingPlugin() { |
| 401 delegate_->InstallMissingPlugin(); | 416 delegate_->InstallMissingPlugin(); |
| 402 } | 417 } |
| 403 | 418 |
| 419 void WebPluginDelegateStub::OnCreateCommandBuffer(int* route_id) { |
| 420 *route_id = 0; |
| 421 #if defined(ENABLE_GPU) |
| 422 // Fail to create the command buffer if some GL implementation cannot be |
| 423 // initialized. |
| 424 if (!gfx::GLContext::InitializeOneOff()) |
| 425 return; |
| 426 |
| 427 command_buffer_stub_.reset(new CommandBufferStub( |
| 428 channel_, |
| 429 instance_id_, |
| 430 delegate_->windowed_handle())); |
| 431 |
| 432 *route_id = command_buffer_stub_->route_id(); |
| 433 #endif // ENABLE_GPU |
| 434 } |
| 435 |
| 436 void WebPluginDelegateStub::OnDestroyCommandBuffer() { |
| 437 #if defined(ENABLE_GPU) |
| 438 command_buffer_stub_.reset(); |
| 439 #endif |
| 440 } |
| 441 |
| 404 void WebPluginDelegateStub::CreateSharedBuffer( | 442 void WebPluginDelegateStub::CreateSharedBuffer( |
| 405 uint32 size, | 443 uint32 size, |
| 406 base::SharedMemory* shared_buf, | 444 base::SharedMemory* shared_buf, |
| 407 base::SharedMemoryHandle* remote_handle) { | 445 base::SharedMemoryHandle* remote_handle) { |
| 408 if (!shared_buf->CreateAndMapAnonymous(size)) { | 446 if (!shared_buf->CreateAndMapAnonymous(size)) { |
| 409 NOTREACHED(); | 447 NOTREACHED(); |
| 410 shared_buf->Close(); | 448 shared_buf->Close(); |
| 411 return; | 449 return; |
| 412 } | 450 } |
| 413 | 451 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 442 webplugin_->OnResourceCreated(resource_id, resource_client); | 480 webplugin_->OnResourceCreated(resource_id, resource_client); |
| 443 } | 481 } |
| 444 | 482 |
| 445 #if defined(OS_MACOSX) | 483 #if defined(OS_MACOSX) |
| 446 void WebPluginDelegateStub::OnSetFakeAcceleratedSurfaceWindowHandle( | 484 void WebPluginDelegateStub::OnSetFakeAcceleratedSurfaceWindowHandle( |
| 447 gfx::PluginWindowHandle window) { | 485 gfx::PluginWindowHandle window) { |
| 448 delegate_->set_windowed_handle(window); | 486 delegate_->set_windowed_handle(window); |
| 449 } | 487 } |
| 450 #endif | 488 #endif |
| 451 | 489 |
| OLD | NEW |