| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/time.h" | 8 #include "base/time.h" |
| 9 #include "base/gfx/platform_device_win.h" | 9 #include "base/gfx/platform_device_win.h" |
| 10 #include "chrome/common/chrome_switches.h" | 10 #include "chrome/common/chrome_switches.h" |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 gfx::PlatformDeviceWin::InitializeDC(hdc); | 219 gfx::PlatformDeviceWin::InitializeDC(hdc); |
| 220 delegate_->Print(hdc); | 220 delegate_->Print(hdc); |
| 221 if (!emf.CloseDc()) { | 221 if (!emf.CloseDc()) { |
| 222 NOTREACHED(); | 222 NOTREACHED(); |
| 223 return; | 223 return; |
| 224 } | 224 } |
| 225 | 225 |
| 226 size_t size = emf.GetDataSize(); | 226 size_t size = emf.GetDataSize(); |
| 227 DCHECK(size); | 227 DCHECK(size); |
| 228 params->size = size; | 228 params->size = size; |
| 229 SharedMemory shared_buf; | 229 base::SharedMemory shared_buf; |
| 230 CreateSharedBuffer(size, &shared_buf, ¶ms->shared_memory); | 230 CreateSharedBuffer(size, &shared_buf, ¶ms->shared_memory); |
| 231 | 231 |
| 232 // Retrieve a copy of the data. | 232 // Retrieve a copy of the data. |
| 233 bool success = emf.GetData(shared_buf.memory(), size); | 233 bool success = emf.GetData(shared_buf.memory(), size); |
| 234 DCHECK(success); | 234 DCHECK(success); |
| 235 } | 235 } |
| 236 | 236 |
| 237 void WebPluginDelegateStub::OnUpdateGeometry( | 237 void WebPluginDelegateStub::OnUpdateGeometry( |
| 238 const gfx::Rect& window_rect, | 238 const gfx::Rect& window_rect, |
| 239 const gfx::Rect& clip_rect, | 239 const gfx::Rect& clip_rect, |
| 240 const std::vector<gfx::Rect>& cutout_rects, | 240 const std::vector<gfx::Rect>& cutout_rects, |
| 241 bool visible, | 241 bool visible, |
| 242 const SharedMemoryHandle& windowless_buffer, | 242 const base::SharedMemoryHandle& windowless_buffer, |
| 243 const SharedMemoryHandle& background_buffer) { | 243 const base::SharedMemoryHandle& background_buffer) { |
| 244 webplugin_->UpdateGeometry( | 244 webplugin_->UpdateGeometry( |
| 245 window_rect, clip_rect, cutout_rects, visible, windowless_buffer, | 245 window_rect, clip_rect, cutout_rects, visible, windowless_buffer, |
| 246 background_buffer); | 246 background_buffer); |
| 247 } | 247 } |
| 248 | 248 |
| 249 void WebPluginDelegateStub::OnGetPluginScriptableObject(int* route_id, | 249 void WebPluginDelegateStub::OnGetPluginScriptableObject(int* route_id, |
| 250 void** npobject_ptr) { | 250 void** npobject_ptr) { |
| 251 NPObject* object = delegate_->GetPluginScriptableObject(); | 251 NPObject* object = delegate_->GetPluginScriptableObject(); |
| 252 if (!object) { | 252 if (!object) { |
| 253 *route_id = MSG_ROUTING_NONE; | 253 *route_id = MSG_ROUTING_NONE; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 void WebPluginDelegateStub::OnDidManualLoadFail() { | 294 void WebPluginDelegateStub::OnDidManualLoadFail() { |
| 295 delegate_->DidManualLoadFail(); | 295 delegate_->DidManualLoadFail(); |
| 296 } | 296 } |
| 297 | 297 |
| 298 void WebPluginDelegateStub::OnInstallMissingPlugin() { | 298 void WebPluginDelegateStub::OnInstallMissingPlugin() { |
| 299 delegate_->InstallMissingPlugin(); | 299 delegate_->InstallMissingPlugin(); |
| 300 } | 300 } |
| 301 | 301 |
| 302 void WebPluginDelegateStub::CreateSharedBuffer( | 302 void WebPluginDelegateStub::CreateSharedBuffer( |
| 303 size_t size, | 303 size_t size, |
| 304 SharedMemory* shared_buf, | 304 base::SharedMemory* shared_buf, |
| 305 SharedMemoryHandle* remote_handle) { | 305 base::SharedMemoryHandle* remote_handle) { |
| 306 if (!shared_buf->Create(std::wstring(), false, false, size)) { | 306 if (!shared_buf->Create(std::wstring(), false, false, size)) { |
| 307 NOTREACHED(); | 307 NOTREACHED(); |
| 308 return; | 308 return; |
| 309 } | 309 } |
| 310 if (!shared_buf->Map(size)) { | 310 if (!shared_buf->Map(size)) { |
| 311 NOTREACHED(); | 311 NOTREACHED(); |
| 312 shared_buf->Close(); | 312 shared_buf->Close(); |
| 313 return; | 313 return; |
| 314 } | 314 } |
| 315 | 315 |
| 316 BOOL result = DuplicateHandle(GetCurrentProcess(), | 316 BOOL result = DuplicateHandle(GetCurrentProcess(), |
| 317 shared_buf->handle(), | 317 shared_buf->handle(), |
| 318 channel_->renderer_handle(), | 318 channel_->renderer_handle(), |
| 319 remote_handle, 0, FALSE, | 319 remote_handle, 0, FALSE, |
| 320 DUPLICATE_SAME_ACCESS); | 320 DUPLICATE_SAME_ACCESS); |
| 321 DCHECK_NE(result, 0); | 321 DCHECK_NE(result, 0); |
| 322 |
| 322 // If the calling function's shared_buf is on the stack, its destructor will | 323 // If the calling function's shared_buf is on the stack, its destructor will |
| 323 // close the shared memory buffer handle. This is fine since we already | 324 // close the shared memory buffer handle. This is fine since we already |
| 324 // duplicated the handle to the renderer process so it will stay "alive". | 325 // duplicated the handle to the renderer process so it will stay "alive". |
| 325 } | 326 } |
| 326 | 327 |
| 327 void WebPluginDelegateStub::OnHandleURLRequestReply( | 328 void WebPluginDelegateStub::OnHandleURLRequestReply( |
| 328 const PluginMsg_URLRequestReply_Params& params) { | 329 const PluginMsg_URLRequestReply_Params& params) { |
| 329 WebPluginResourceClient* resource_client = | 330 WebPluginResourceClient* resource_client = |
| 330 delegate_->CreateResourceClient(params.resource_id, params.url, | 331 delegate_->CreateResourceClient(params.resource_id, params.url, |
| 331 params.notify_needed, | 332 params.notify_needed, |
| 332 params.notify_data, | 333 params.notify_data, |
| 333 params.stream); | 334 params.stream); |
| 334 webplugin_->OnResourceCreated(params.resource_id, resource_client); | 335 webplugin_->OnResourceCreated(params.resource_id, resource_client); |
| 335 } | 336 } |
| 336 | 337 |
| 337 void WebPluginDelegateStub::OnURLRequestRouted(const std::string& url, | 338 void WebPluginDelegateStub::OnURLRequestRouted(const std::string& url, |
| 338 bool notify_needed, | 339 bool notify_needed, |
| 339 HANDLE notify_data) { | 340 HANDLE notify_data) { |
| 340 delegate_->URLRequestRouted(url, notify_needed, notify_data); | 341 delegate_->URLRequestRouted(url, notify_needed, notify_data); |
| 341 } | 342 } |
| 342 | 343 |
| OLD | NEW |