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

Unified Diff: chrome/plugin/webplugin_proxy.cc

Issue 79020: linux (and some posix): multiprocess plugins compiling. (Closed)
Patch Set: rebased Created 11 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/plugin/webplugin_proxy.h ('k') | chrome/renderer/render_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/plugin/webplugin_proxy.cc
diff --git a/chrome/plugin/webplugin_proxy.cc b/chrome/plugin/webplugin_proxy.cc
index 6a827ceb757ce2424c7068cc4a688219422a375d..3890ec935268759119ca96a169e04377f0e7384e 100644
--- a/chrome/plugin/webplugin_proxy.cc
+++ b/chrome/plugin/webplugin_proxy.cc
@@ -4,15 +4,14 @@
#include "chrome/plugin/webplugin_proxy.h"
-#include "base/gfx/gdi_util.h"
#include "base/scoped_handle.h"
#include "base/shared_memory.h"
#include "base/singleton.h"
#include "base/waitable_event.h"
+#include "build/build_config.h"
#include "chrome/common/gfx/chrome_canvas.h"
#include "chrome/common/plugin_messages.h"
#include "chrome/common/url_constants.h"
-#include "chrome/common/win_util.h"
#include "chrome/plugin/npobject_proxy.h"
#include "chrome/plugin/npobject_util.h"
#include "chrome/plugin/plugin_channel.h"
@@ -21,6 +20,11 @@
#include "skia/ext/platform_device.h"
#include "webkit/glue/webplugin_delegate.h"
+#if defined(OS_WIN)
+#include "base/gfx/gdi_util.h"
+#include "chrome/common/win_util.h"
+#endif
+
typedef std::map<CPBrowsingContext, WebPluginProxy*> ContextMap;
static ContextMap& GetContextMap() {
return *Singleton<ContextMap>::get();
@@ -37,8 +41,8 @@ WebPluginProxy::WebPluginProxy(
plugin_element_(NULL),
delegate_(delegate),
waiting_for_paint_(false),
-#pragma warning(suppress: 4355) // can use this
- runnable_method_factory_(this) {
+ ALLOW_THIS_IN_INITIALIZER_LIST(runnable_method_factory_(this))
+{
}
WebPluginProxy::~WebPluginProxy() {
@@ -256,9 +260,10 @@ void WebPluginProxy::HandleURLRequest(const char *method,
return;
}
- if (!target && (0 == _strcmpi(method, "GET"))) {
+ if (!target && (0 == base::strcasecmp(method, "GET"))) {
// Please refer to https://bugzilla.mozilla.org/show_bug.cgi?id=366082
// for more details on this.
+#if defined(OS_WIN)
if (delegate_->GetQuirks() &
WebPluginDelegate::PLUGIN_QUIRK_BLOCK_NONSTANDARD_GETURL_REQUESTS) {
GURL request_url(url);
@@ -268,6 +273,10 @@ void WebPluginProxy::HandleURLRequest(const char *method,
return;
}
}
+#else
+ // TODO(port): we need a GetQuirks() on our delegate impl.
+ NOTIMPLEMENTED();
+#endif
}
PluginHostMsg_URLRequest_Params params;
@@ -291,6 +300,7 @@ void WebPluginProxy::HandleURLRequest(const char *method,
}
void WebPluginProxy::Paint(const gfx::Rect& rect) {
+#if defined(OS_WIN)
if (!windowless_hdc_)
return;
@@ -317,21 +327,31 @@ void WebPluginProxy::Paint(const gfx::Rect& rect) {
SelectClipRgn(windowless_hdc_, NULL);
DeleteObject(clip_region);
+#else
+ // TODO(port): windowless painting.
+ NOTIMPLEMENTED();
+#endif
}
void WebPluginProxy::UpdateGeometry(
const gfx::Rect& window_rect,
const gfx::Rect& clip_rect,
- const base::SharedMemoryHandle& windowless_buffer,
- const base::SharedMemoryHandle& background_buffer) {
+ const TransportDIB::Id& windowless_buffer_id,
+ const TransportDIB::Id& background_buffer_id) {
+#if defined(OS_WIN)
+ // TODO(port): this isn't correct usage of a TransportDIB; for now,
+ // the caller temporarly just stuffs the handle into the HANDLE
+ // field of the TransportDIB::Id so it should behave like the older
+ // code.
gfx::Rect old = delegate_->GetRect();
gfx::Rect old_clip_rect = delegate_->GetClipRect();
bool moved = old.x() != window_rect.x() || old.y() != window_rect.y();
delegate_->UpdateGeometry(window_rect, clip_rect);
- if (windowless_buffer) {
+ if (windowless_buffer_id.handle) {
// The plugin's rect changed, so now we have a new buffer to draw into.
- SetWindowlessBuffer(windowless_buffer, background_buffer);
+ SetWindowlessBuffer(windowless_buffer_id.handle,
+ background_buffer_id.handle);
} else if (moved) {
// The plugin moved, so update our world transform.
UpdateTransform();
@@ -342,8 +362,12 @@ void WebPluginProxy::UpdateGeometry(
old_clip_rect.IsEmpty() && !damaged_rect_.IsEmpty()) {
InvalidateRect(damaged_rect_);
}
+#else
+ NOTIMPLEMENTED();
+#endif
}
+#if defined(OS_WIN)
void WebPluginProxy::SetWindowlessBuffer(
const base::SharedMemoryHandle& windowless_buffer,
const base::SharedMemoryHandle& background_buffer) {
@@ -411,6 +435,7 @@ void WebPluginProxy::UpdateTransform() {
xf.eM22 = 1;
SetWorldTransform(windowless_hdc_, &xf);
}
+#endif
void WebPluginProxy::CancelDocumentLoad() {
Send(new PluginHostMsg_CancelDocumentLoad(route_id_));
« no previous file with comments | « chrome/plugin/webplugin_proxy.h ('k') | chrome/renderer/render_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698