Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 556 bool PluginInstance::Initialize(WebPluginContainer* container, | 556 bool PluginInstance::Initialize(WebPluginContainer* container, |
| 557 const std::vector<std::string>& arg_names, | 557 const std::vector<std::string>& arg_names, |
| 558 const std::vector<std::string>& arg_values, | 558 const std::vector<std::string>& arg_values, |
| 559 const GURL& plugin_url, | 559 const GURL& plugin_url, |
| 560 bool full_frame) { | 560 bool full_frame) { |
| 561 container_ = container; | 561 container_ = container; |
| 562 plugin_url_ = plugin_url; | 562 plugin_url_ = plugin_url; |
| 563 full_frame_ = full_frame; | 563 full_frame_ = full_frame; |
| 564 | 564 |
| 565 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); | 565 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); |
| 566 container_->setWantsWheelEvents(IsAcceptingWheelEvents()); | |
| 566 | 567 |
| 567 SetGPUHistogram(delegate_->GetPreferences(), arg_names, arg_values); | 568 SetGPUHistogram(delegate_->GetPreferences(), arg_names, arg_values); |
| 568 | 569 |
| 569 argn_ = arg_names; | 570 argn_ = arg_names; |
| 570 argv_ = arg_values; | 571 argv_ = arg_values; |
| 571 scoped_array<const char*> argn_array(StringVectorToArgArray(argn_)); | 572 scoped_array<const char*> argn_array(StringVectorToArgArray(argn_)); |
| 572 scoped_array<const char*> argv_array(StringVectorToArgArray(argv_)); | 573 scoped_array<const char*> argv_array(StringVectorToArgArray(argv_)); |
| 573 return PP_ToBool(instance_interface_->DidCreate(pp_instance(), | 574 return PP_ToBool(instance_interface_->DidCreate(pp_instance(), |
| 574 argn_.size(), | 575 argn_.size(), |
| 575 argn_array.get(), | 576 argn_array.get(), |
| (...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1169 bool has_focus = PluginHasFocus(); | 1170 bool has_focus = PluginHasFocus(); |
| 1170 delegate()->PluginFocusChanged(this, has_focus); | 1171 delegate()->PluginFocusChanged(this, has_focus); |
| 1171 instance_interface_->DidChangeFocus(pp_instance(), PP_FromBool(has_focus)); | 1172 instance_interface_->DidChangeFocus(pp_instance(), PP_FromBool(has_focus)); |
| 1172 } | 1173 } |
| 1173 | 1174 |
| 1174 bool PluginInstance::IsAcceptingTouchEvents() const { | 1175 bool PluginInstance::IsAcceptingTouchEvents() const { |
| 1175 return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) || | 1176 return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) || |
| 1176 (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH); | 1177 (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH); |
| 1177 } | 1178 } |
| 1178 | 1179 |
| 1180 bool PluginInstance::IsAcceptingWheelEvents() const { | |
| 1181 return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_WHEEL) || | |
| 1182 (input_event_mask_ & PP_INPUTEVENT_CLASS_WHEEL); | |
| 1183 } | |
| 1184 | |
| 1179 void PluginInstance::ScheduleAsyncDidChangeView() { | 1185 void PluginInstance::ScheduleAsyncDidChangeView() { |
| 1180 if (view_change_weak_ptr_factory_.HasWeakPtrs()) | 1186 if (view_change_weak_ptr_factory_.HasWeakPtrs()) |
| 1181 return; // Already scheduled. | 1187 return; // Already scheduled. |
| 1182 MessageLoop::current()->PostTask( | 1188 MessageLoop::current()->PostTask( |
| 1183 FROM_HERE, base::Bind(&PluginInstance::SendAsyncDidChangeView, | 1189 FROM_HERE, base::Bind(&PluginInstance::SendAsyncDidChangeView, |
| 1184 view_change_weak_ptr_factory_.GetWeakPtr())); | 1190 view_change_weak_ptr_factory_.GetWeakPtr())); |
| 1185 } | 1191 } |
| 1186 | 1192 |
| 1187 void PluginInstance::SendAsyncDidChangeView() { | 1193 void PluginInstance::SendAsyncDidChangeView() { |
| 1188 // The bound callback that owns the weak pointer is still valid until after | 1194 // The bound callback that owns the weak pointer is still valid until after |
| (...skipping 944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2133 PP_Instance /* instance */) { | 2139 PP_Instance /* instance */) { |
| 2134 return &gamepad_impl_; | 2140 return &gamepad_impl_; |
| 2135 } | 2141 } |
| 2136 | 2142 |
| 2137 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, | 2143 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, |
| 2138 uint32_t event_classes) { | 2144 uint32_t event_classes) { |
| 2139 input_event_mask_ |= event_classes; | 2145 input_event_mask_ |= event_classes; |
| 2140 filtered_input_event_mask_ &= ~(event_classes); | 2146 filtered_input_event_mask_ &= ~(event_classes); |
| 2141 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) | 2147 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) |
| 2142 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); | 2148 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); |
| 2149 if (event_classes & PP_INPUTEVENT_CLASS_WHEEL) | |
| 2150 container_->setWantsWheelEvents(IsAcceptingWheelEvents()); | |
|
jamesr
2012/11/26 06:23:07
this little 4-line block of checking for PP_INPUTE
Yusuke Sato
2012/11/26 23:22:18
Done.
| |
| 2143 return ValidateRequestInputEvents(false, event_classes); | 2151 return ValidateRequestInputEvents(false, event_classes); |
| 2144 } | 2152 } |
| 2145 | 2153 |
| 2146 int32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance, | 2154 int32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance, |
| 2147 uint32_t event_classes) { | 2155 uint32_t event_classes) { |
| 2148 filtered_input_event_mask_ |= event_classes; | 2156 filtered_input_event_mask_ |= event_classes; |
| 2149 input_event_mask_ &= ~(event_classes); | 2157 input_event_mask_ &= ~(event_classes); |
| 2150 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) | 2158 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) |
| 2151 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); | 2159 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); |
| 2160 if (event_classes & PP_INPUTEVENT_CLASS_WHEEL) | |
| 2161 container_->setWantsWheelEvents(IsAcceptingWheelEvents()); | |
| 2152 return ValidateRequestInputEvents(true, event_classes); | 2162 return ValidateRequestInputEvents(true, event_classes); |
| 2153 } | 2163 } |
| 2154 | 2164 |
| 2155 void PluginInstance::ClearInputEventRequest(PP_Instance instance, | 2165 void PluginInstance::ClearInputEventRequest(PP_Instance instance, |
| 2156 uint32_t event_classes) { | 2166 uint32_t event_classes) { |
| 2157 input_event_mask_ &= ~(event_classes); | 2167 input_event_mask_ &= ~(event_classes); |
| 2158 filtered_input_event_mask_ &= ~(event_classes); | 2168 filtered_input_event_mask_ &= ~(event_classes); |
| 2159 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) | 2169 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) |
| 2160 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); | 2170 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); |
| 2171 if (event_classes & PP_INPUTEVENT_CLASS_WHEEL) | |
| 2172 container_->setWantsWheelEvents(IsAcceptingWheelEvents()); | |
| 2161 } | 2173 } |
| 2162 | 2174 |
| 2163 void PluginInstance::ZoomChanged(PP_Instance instance, double factor) { | 2175 void PluginInstance::ZoomChanged(PP_Instance instance, double factor) { |
| 2164 // We only want to tell the page to change its zoom if the whole page is the | 2176 // We only want to tell the page to change its zoom if the whole page is the |
| 2165 // plugin. If we're in an iframe, then don't do anything. | 2177 // plugin. If we're in an iframe, then don't do anything. |
| 2166 if (!IsFullPagePlugin()) | 2178 if (!IsFullPagePlugin()) |
| 2167 return; | 2179 return; |
| 2168 container()->zoomLevelChanged(WebView::zoomFactorToZoomLevel(factor)); | 2180 container()->zoomLevelChanged(WebView::zoomFactorToZoomLevel(factor)); |
| 2169 } | 2181 } |
| 2170 | 2182 |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2470 screen_size_for_fullscreen_ = gfx::Size(); | 2482 screen_size_for_fullscreen_ = gfx::Size(); |
| 2471 WebElement element = container_->element(); | 2483 WebElement element = container_->element(); |
| 2472 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); | 2484 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); |
| 2473 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); | 2485 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); |
| 2474 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); | 2486 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); |
| 2475 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); | 2487 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); |
| 2476 } | 2488 } |
| 2477 | 2489 |
| 2478 } // namespace ppapi | 2490 } // namespace ppapi |
| 2479 } // namespace webkit | 2491 } // namespace webkit |
| OLD | NEW |