OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/renderer/webplugin_delegate_proxy.h" | 5 #include "chrome/renderer/webplugin_delegate_proxy.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "app/gfx/blit.h" | 9 #include "app/gfx/blit.h" |
10 #include "app/gfx/canvas.h" | 10 #include "app/gfx/canvas.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 using WebKit::WebDragData; | 53 using WebKit::WebDragData; |
54 using WebKit::WebVector; | 54 using WebKit::WebVector; |
55 using WebKit::WebString; | 55 using WebKit::WebString; |
56 | 56 |
57 // Proxy for WebPluginResourceClient. The object owns itself after creation, | 57 // Proxy for WebPluginResourceClient. The object owns itself after creation, |
58 // deleting itself after its callback has been called. | 58 // deleting itself after its callback has been called. |
59 class ResourceClientProxy : public webkit_glue::WebPluginResourceClient { | 59 class ResourceClientProxy : public webkit_glue::WebPluginResourceClient { |
60 public: | 60 public: |
61 ResourceClientProxy(PluginChannelHost* channel, int instance_id) | 61 ResourceClientProxy(PluginChannelHost* channel, int instance_id) |
62 : channel_(channel), instance_id_(instance_id), resource_id_(0), | 62 : channel_(channel), instance_id_(instance_id), resource_id_(0), |
63 notify_needed_(false), notify_data_(NULL), | 63 notify_needed_(false), notify_data_(0), |
64 multibyte_response_expected_(false) { | 64 multibyte_response_expected_(false) { |
65 } | 65 } |
66 | 66 |
67 ~ResourceClientProxy() { | 67 ~ResourceClientProxy() { |
68 } | 68 } |
69 | 69 |
70 void Initialize(int resource_id, const GURL& url, bool notify_needed, | 70 void Initialize(int resource_id, const GURL& url, bool notify_needed, |
71 intptr_t notify_data, intptr_t existing_stream) { | 71 intptr_t notify_data, intptr_t existing_stream) { |
72 resource_id_ = resource_id; | 72 resource_id_ = resource_id; |
73 url_ = url; | 73 url_ = url; |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 // For e.g. response for a HTTP byte range request. | 154 // For e.g. response for a HTTP byte range request. |
155 bool multibyte_response_expected_; | 155 bool multibyte_response_expected_; |
156 }; | 156 }; |
157 | 157 |
158 WebPluginDelegateProxy::WebPluginDelegateProxy( | 158 WebPluginDelegateProxy::WebPluginDelegateProxy( |
159 const std::string& mime_type, | 159 const std::string& mime_type, |
160 const base::WeakPtr<RenderView>& render_view) | 160 const base::WeakPtr<RenderView>& render_view) |
161 : render_view_(render_view), | 161 : render_view_(render_view), |
162 plugin_(NULL), | 162 plugin_(NULL), |
163 windowless_(false), | 163 windowless_(false), |
164 window_(NULL), | 164 window_(gfx::kNullPluginWindow), |
165 mime_type_(mime_type), | 165 mime_type_(mime_type), |
166 instance_id_(MSG_ROUTING_NONE), | 166 instance_id_(MSG_ROUTING_NONE), |
167 npobject_(NULL), | 167 npobject_(NULL), |
168 sad_plugin_(NULL), | 168 sad_plugin_(NULL), |
169 invalidate_pending_(false), | 169 invalidate_pending_(false), |
170 transparent_(false), | 170 transparent_(false), |
171 page_url_(render_view_->webview()->mainFrame()->url()) { | 171 page_url_(render_view_->webview()->mainFrame()->url()) { |
172 } | 172 } |
173 | 173 |
174 WebPluginDelegateProxy::~WebPluginDelegateProxy() { | 174 WebPluginDelegateProxy::~WebPluginDelegateProxy() { |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 CGBitmapContextGetData(bg_context)); | 649 CGBitmapContextGetData(bg_context)); |
650 int full_bg_width = CGBitmapContextGetWidth(bg_context); | 650 int full_bg_width = CGBitmapContextGetWidth(bg_context); |
651 int full_bg_height = CGBitmapContextGetHeight(bg_context); | 651 int full_bg_height = CGBitmapContextGetHeight(bg_context); |
652 int bg_stride = CGBitmapContextGetBytesPerRow(bg_context); | 652 int bg_stride = CGBitmapContextGetBytesPerRow(bg_context); |
653 int bg_last_row = CGBitmapContextGetHeight(bg_context) - 1; | 653 int bg_last_row = CGBitmapContextGetHeight(bg_context) - 1; |
654 | 654 |
655 int bytes_per_pixel = CGBitmapContextGetBitsPerPixel(context) / 8; | 655 int bytes_per_pixel = CGBitmapContextGetBitsPerPixel(context) / 8; |
656 #else | 656 #else |
657 const unsigned char* page_bytes = cairo_image_surface_get_data(page_surface); | 657 const unsigned char* page_bytes = cairo_image_surface_get_data(page_surface); |
658 int page_stride = cairo_image_surface_get_stride(page_surface); | 658 int page_stride = cairo_image_surface_get_stride(page_surface); |
659 int page_start_x = page_x_double; | 659 int page_start_x = static_cast<int>(page_x_double); |
660 int page_start_y = page_y_double; | 660 int page_start_y = static_cast<int>(page_y_double); |
661 | 661 |
662 skia::PlatformDevice& device = | 662 skia::PlatformDevice& device = |
663 background_store_canvas_->getTopPlatformDevice(); | 663 background_store_canvas_->getTopPlatformDevice(); |
664 cairo_surface_t* bg_surface = cairo_get_target(device.beginPlatformPaint()); | 664 cairo_surface_t* bg_surface = cairo_get_target(device.beginPlatformPaint()); |
665 DCHECK_EQ(cairo_surface_get_type(bg_surface), CAIRO_SURFACE_TYPE_IMAGE); | 665 DCHECK_EQ(cairo_surface_get_type(bg_surface), CAIRO_SURFACE_TYPE_IMAGE); |
666 DCHECK_EQ(cairo_image_surface_get_format(bg_surface), CAIRO_FORMAT_ARGB32); | 666 DCHECK_EQ(cairo_image_surface_get_format(bg_surface), CAIRO_FORMAT_ARGB32); |
667 const unsigned char* bg_bytes = cairo_image_surface_get_data(bg_surface); | 667 const unsigned char* bg_bytes = cairo_image_surface_get_data(bg_surface); |
668 int full_bg_width = cairo_image_surface_get_width(bg_surface); | 668 int full_bg_width = cairo_image_surface_get_width(bg_surface); |
669 int full_bg_height = cairo_image_surface_get_height(bg_surface); | 669 int full_bg_height = cairo_image_surface_get_height(bg_surface); |
670 int bg_stride = cairo_image_surface_get_stride(bg_surface); | 670 int bg_stride = cairo_image_surface_get_stride(bg_surface); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 void WebPluginDelegateProxy::OnSetWindow(gfx::PluginWindowHandle window) { | 779 void WebPluginDelegateProxy::OnSetWindow(gfx::PluginWindowHandle window) { |
780 windowless_ = !window; | 780 windowless_ = !window; |
781 window_ = window; | 781 window_ = window; |
782 if (plugin_) | 782 if (plugin_) |
783 plugin_->SetWindow(window); | 783 plugin_->SetWindow(window); |
784 } | 784 } |
785 | 785 |
786 void WebPluginDelegateProxy::WillDestroyWindow() { | 786 void WebPluginDelegateProxy::WillDestroyWindow() { |
787 DCHECK(window_); | 787 DCHECK(window_); |
788 plugin_->WillDestroyWindow(window_); | 788 plugin_->WillDestroyWindow(window_); |
789 window_ = NULL; | 789 window_ = gfx::kNullPluginWindow; |
790 } | 790 } |
791 | 791 |
792 #if defined(OS_WIN) | 792 #if defined(OS_WIN) |
793 void WebPluginDelegateProxy::OnSetWindowlessPumpEvent( | 793 void WebPluginDelegateProxy::OnSetWindowlessPumpEvent( |
794 HANDLE modal_loop_pump_messages_event) { | 794 HANDLE modal_loop_pump_messages_event) { |
795 DCHECK(modal_loop_pump_messages_event_ == NULL); | 795 DCHECK(modal_loop_pump_messages_event_ == NULL); |
796 | 796 |
797 modal_loop_pump_messages_event_.reset( | 797 modal_loop_pump_messages_event_.reset( |
798 new base::WaitableEvent(modal_loop_pump_messages_event)); | 798 new base::WaitableEvent(modal_loop_pump_messages_event)); |
799 } | 799 } |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 return; | 929 return; |
930 | 930 |
931 NPVariant results[4]; | 931 NPVariant results[4]; |
932 INT32_TO_NPVARIANT(drag_id, results[0]); | 932 INT32_TO_NPVARIANT(drag_id, results[0]); |
933 INT32_TO_NPVARIANT(event_id, results[1]); | 933 INT32_TO_NPVARIANT(event_id, results[1]); |
934 EncodeDragData(data, add_data, &results[2], &results[3]); | 934 EncodeDragData(data, add_data, &results[2], &results[3]); |
935 | 935 |
936 for (size_t i = 0; i < arraysize(results); ++i) { | 936 for (size_t i = 0; i < arraysize(results); ++i) { |
937 values->push_back(NPVariant_Param()); | 937 values->push_back(NPVariant_Param()); |
938 CreateNPVariantParam( | 938 CreateNPVariantParam( |
939 results[i], NULL, &values->back(), false, NULL, page_url_); | 939 results[i], NULL, &values->back(), false, 0, page_url_); |
940 } | 940 } |
941 | 941 |
942 *success = true; | 942 *success = true; |
943 } | 943 } |
944 | 944 |
945 void WebPluginDelegateProxy::OnSetDropEffect(const NPVariant_Param& object, | 945 void WebPluginDelegateProxy::OnSetDropEffect(const NPVariant_Param& object, |
946 int effect, | 946 int effect, |
947 bool* success) { | 947 bool* success) { |
948 DCHECK(success); | 948 DCHECK(success); |
949 *success = false; | 949 *success = false; |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1054 intptr_t existing_stream, bool notify_needed, intptr_t notify_data) { | 1054 intptr_t existing_stream, bool notify_needed, intptr_t notify_data) { |
1055 plugin_->InitiateHTTPRangeRequest(url.c_str(), range_info.c_str(), | 1055 plugin_->InitiateHTTPRangeRequest(url.c_str(), range_info.c_str(), |
1056 existing_stream, notify_needed, | 1056 existing_stream, notify_needed, |
1057 notify_data); | 1057 notify_data); |
1058 } | 1058 } |
1059 | 1059 |
1060 void WebPluginDelegateProxy::OnDeferResourceLoading(int resource_id, | 1060 void WebPluginDelegateProxy::OnDeferResourceLoading(int resource_id, |
1061 bool defer) { | 1061 bool defer) { |
1062 plugin_->SetDeferResourceLoading(resource_id, defer); | 1062 plugin_->SetDeferResourceLoading(resource_id, defer); |
1063 } | 1063 } |
OLD | NEW |