Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(407)

Side by Side Diff: chrome/plugin/webplugin_proxy.cc

Issue 146078: linux: OOP windowed plugins (Closed)
Patch Set: new version Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/plugin/webplugin_proxy.h ('k') | chrome/renderer/webplugin_delegate_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_proxy.h" 5 #include "chrome/plugin/webplugin_proxy.h"
6 6
7 #include "app/gfx/canvas.h" 7 #include "app/gfx/canvas.h"
8 #if defined(OS_WIN) 8 #if defined(OS_WIN)
9 #include "app/win_util.h" 9 #include "app/win_util.h"
10 #endif 10 #endif
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 WebPluginProxy::~WebPluginProxy() { 50 WebPluginProxy::~WebPluginProxy() {
51 if (cp_browsing_context_) 51 if (cp_browsing_context_)
52 GetContextMap().erase(cp_browsing_context_); 52 GetContextMap().erase(cp_browsing_context_);
53 } 53 }
54 54
55 bool WebPluginProxy::Send(IPC::Message* msg) { 55 bool WebPluginProxy::Send(IPC::Message* msg) {
56 return channel_->Send(msg); 56 return channel_->Send(msg);
57 } 57 }
58 58
59 #if defined(OS_LINUX)
60 gfx::PluginWindowHandle WebPluginProxy::CreatePluginContainer() {
61 gfx::PluginWindowHandle container;
62 Send(new PluginHostMsg_CreatePluginContainer(route_id_, &container));
63 return container;
64 }
65 #endif
66
59 void WebPluginProxy::SetWindow(gfx::PluginWindowHandle window) { 67 void WebPluginProxy::SetWindow(gfx::PluginWindowHandle window) {
60 #if defined(OS_WIN) 68 Send(new PluginHostMsg_SetWindow(route_id_, window));
61 Send(new PluginHostMsg_SetWindow(route_id_, gfx::IdFromNativeView(window)));
62 #else
63 NOTIMPLEMENTED();
64 #endif
65 } 69 }
66 70
67 void WebPluginProxy::WillDestroyWindow(gfx::PluginWindowHandle window) { 71 void WebPluginProxy::WillDestroyWindow(gfx::PluginWindowHandle window) {
68 #if defined(OS_WIN) 72 #if defined(OS_WIN)
69 PluginThread::current()->Send( 73 PluginThread::current()->Send(
70 new PluginProcessHostMsg_PluginWindowDestroyed( 74 new PluginProcessHostMsg_PluginWindowDestroyed(
71 window, ::GetParent(window))); 75 window, ::GetParent(window)));
76 #elif defined(OS_LINUX)
77 Send(new PluginHostMsg_DestroyPluginContainer(route_id_, window));
72 #else 78 #else
73 NOTIMPLEMENTED(); 79 NOTIMPLEMENTED();
74 #endif 80 #endif
75 } 81 }
76 82
77 #if defined(OS_WIN) 83 #if defined(OS_WIN)
78 void WebPluginProxy::SetWindowlessPumpEvent(HANDLE pump_messages_event) { 84 void WebPluginProxy::SetWindowlessPumpEvent(HANDLE pump_messages_event) {
79 HANDLE pump_messages_event_for_renderer = NULL; 85 HANDLE pump_messages_event_for_renderer = NULL;
80 DuplicateHandle(GetCurrentProcess(), pump_messages_event, 86 DuplicateHandle(GetCurrentProcess(), pump_messages_event,
81 channel_->renderer_handle(), 87 channel_->renderer_handle(),
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 intptr_t notify_data, 274 intptr_t notify_data,
269 bool popups_allowed) { 275 bool popups_allowed) {
270 if (!url) { 276 if (!url) {
271 NOTREACHED(); 277 NOTREACHED();
272 return; 278 return;
273 } 279 }
274 280
275 if (!target && (0 == base::strcasecmp(method, "GET"))) { 281 if (!target && (0 == base::strcasecmp(method, "GET"))) {
276 // Please refer to https://bugzilla.mozilla.org/show_bug.cgi?id=366082 282 // Please refer to https://bugzilla.mozilla.org/show_bug.cgi?id=366082
277 // for more details on this. 283 // for more details on this.
278 #if defined(OS_WIN)
279 if (delegate_->GetQuirks() & 284 if (delegate_->GetQuirks() &
280 WebPluginDelegate::PLUGIN_QUIRK_BLOCK_NONSTANDARD_GETURL_REQUESTS) { 285 WebPluginDelegate::PLUGIN_QUIRK_BLOCK_NONSTANDARD_GETURL_REQUESTS) {
281 GURL request_url(url); 286 GURL request_url(url);
282 if (!request_url.SchemeIs(chrome::kHttpScheme) && 287 if (!request_url.SchemeIs(chrome::kHttpScheme) &&
283 !request_url.SchemeIs(chrome::kHttpsScheme) && 288 !request_url.SchemeIs(chrome::kHttpsScheme) &&
284 !request_url.SchemeIs(chrome::kFtpScheme)) { 289 !request_url.SchemeIs(chrome::kFtpScheme)) {
285 return; 290 return;
286 } 291 }
287 } 292 }
288 #else
289 // TODO(port): we need a GetQuirks() on our delegate impl.
290 NOTIMPLEMENTED();
291 #endif
292 } 293 }
293 294
294 PluginHostMsg_URLRequest_Params params; 295 PluginHostMsg_URLRequest_Params params;
295 params.method = method; 296 params.method = method;
296 params.is_javascript_url = is_javascript_url; 297 params.is_javascript_url = is_javascript_url;
297 if (target) 298 if (target)
298 params.target = std::string(target); 299 params.target = std::string(target);
299 300
300 if (len) { 301 if (len) {
301 params.buffer.resize(len); 302 params.buffer.resize(len);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 // TODO(port): windowless painting. 396 // TODO(port): windowless painting.
396 NOTIMPLEMENTED(); 397 NOTIMPLEMENTED();
397 #endif 398 #endif
398 } 399 }
399 400
400 void WebPluginProxy::UpdateGeometry( 401 void WebPluginProxy::UpdateGeometry(
401 const gfx::Rect& window_rect, 402 const gfx::Rect& window_rect,
402 const gfx::Rect& clip_rect, 403 const gfx::Rect& clip_rect,
403 const TransportDIB::Id& windowless_buffer_id, 404 const TransportDIB::Id& windowless_buffer_id,
404 const TransportDIB::Id& background_buffer_id) { 405 const TransportDIB::Id& background_buffer_id) {
405 #if defined(OS_WIN)
406 // TODO(port): this isn't correct usage of a TransportDIB; for now, 406 // TODO(port): this isn't correct usage of a TransportDIB; for now,
407 // the caller temporarly just stuffs the handle into the HANDLE 407 // the caller temporarly just stuffs the handle into the HANDLE
408 // field of the TransportDIB::Id so it should behave like the older 408 // field of the TransportDIB::Id so it should behave like the older
409 // code. 409 // code.
410 gfx::Rect old = delegate_->GetRect(); 410 gfx::Rect old = delegate_->GetRect();
411 gfx::Rect old_clip_rect = delegate_->GetClipRect(); 411 gfx::Rect old_clip_rect = delegate_->GetClipRect();
412 412
413 delegate_->UpdateGeometry(window_rect, clip_rect);
414 #if defined(OS_WIN)
413 bool moved = old.x() != window_rect.x() || old.y() != window_rect.y(); 415 bool moved = old.x() != window_rect.x() || old.y() != window_rect.y();
414 delegate_->UpdateGeometry(window_rect, clip_rect);
415 if (windowless_buffer_id.handle) { 416 if (windowless_buffer_id.handle) {
416 // The plugin's rect changed, so now we have a new buffer to draw into. 417 // The plugin's rect changed, so now we have a new buffer to draw into.
417 SetWindowlessBuffer(windowless_buffer_id.handle, 418 SetWindowlessBuffer(windowless_buffer_id.handle,
418 background_buffer_id.handle); 419 background_buffer_id.handle);
419 } else if (moved) { 420 } else if (moved) {
420 // The plugin moved, so update our world transform. 421 // The plugin moved, so update our world transform.
421 UpdateTransform(); 422 UpdateTransform();
422 } 423 }
423 // Send over any pending invalidates which occured when the plugin was 424 // Send over any pending invalidates which occured when the plugin was
424 // off screen. 425 // off screen.
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 while (index != resource_clients_.end()) { 532 while (index != resource_clients_.end()) {
532 WebPluginResourceClient* client = (*index).second; 533 WebPluginResourceClient* client = (*index).second;
533 534
534 if (client == resource_client) { 535 if (client == resource_client) {
535 resource_clients_.erase(index++); 536 resource_clients_.erase(index++);
536 } else { 537 } else {
537 index++; 538 index++;
538 } 539 }
539 } 540 }
540 } 541 }
OLDNEW
« no previous file with comments | « chrome/plugin/webplugin_proxy.h ('k') | chrome/renderer/webplugin_delegate_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698