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/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/linked_ptr.h" | 10 #include "base/memory/linked_ptr.h" |
| (...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 776 ScheduleAsyncDidChangeView(previous_view); | 776 ScheduleAsyncDidChangeView(previous_view); |
| 777 | 777 |
| 778 // Reset the size attributes that we hacked to fill in the screen and | 778 // Reset the size attributes that we hacked to fill in the screen and |
| 779 // retrigger ViewChanged. Make sure we don't forward duplicates of | 779 // retrigger ViewChanged. Make sure we don't forward duplicates of |
| 780 // this view to the plugin. | 780 // this view to the plugin. |
| 781 ResetSizeAttributesAfterFullscreen(); | 781 ResetSizeAttributesAfterFullscreen(); |
| 782 return; | 782 return; |
| 783 } | 783 } |
| 784 } | 784 } |
| 785 | 785 |
| 786 flash_fullscreen_ = (fullscreen_container_ != NULL); | 786 UpdateFlashFullscreenState(fullscreen_container_ != NULL); |
| 787 | |
| 787 SendDidChangeView(previous_view); | 788 SendDidChangeView(previous_view); |
| 788 } | 789 } |
| 789 | 790 |
| 790 void PluginInstance::SetWebKitFocus(bool has_focus) { | 791 void PluginInstance::SetWebKitFocus(bool has_focus) { |
| 791 if (has_webkit_focus_ == has_focus) | 792 if (has_webkit_focus_ == has_focus) |
| 792 return; | 793 return; |
| 793 | 794 |
| 794 bool old_plugin_focus = PluginHasFocus(); | 795 bool old_plugin_focus = PluginHasFocus(); |
| 795 has_webkit_focus_ = has_focus; | 796 has_webkit_focus_ = has_focus; |
| 796 if (PluginHasFocus() != old_plugin_focus) { | 797 if (PluginHasFocus() != old_plugin_focus) |
| 797 delegate()->PluginFocusChanged(this, PluginHasFocus()); | 798 SendFocusChangeNotification(); |
| 798 instance_interface_->DidChangeFocus(pp_instance(), | |
| 799 PP_FromBool(PluginHasFocus())); | |
| 800 } | |
| 801 } | 799 } |
| 802 | 800 |
| 803 void PluginInstance::SetContentAreaFocus(bool has_focus) { | 801 void PluginInstance::SetContentAreaFocus(bool has_focus) { |
| 804 if (has_content_area_focus_ == has_focus) | 802 if (has_content_area_focus_ == has_focus) |
| 805 return; | 803 return; |
| 806 | 804 |
| 807 bool old_plugin_focus = PluginHasFocus(); | 805 bool old_plugin_focus = PluginHasFocus(); |
| 808 has_content_area_focus_ = has_focus; | 806 has_content_area_focus_ = has_focus; |
| 809 if (PluginHasFocus() != old_plugin_focus) { | 807 if (PluginHasFocus() != old_plugin_focus) |
| 810 instance_interface_->DidChangeFocus(pp_instance(), | 808 SendFocusChangeNotification(); |
| 811 PP_FromBool(PluginHasFocus())); | |
| 812 } | |
| 813 } | 809 } |
| 814 | 810 |
| 815 void PluginInstance::PageVisibilityChanged(bool is_visible) { | 811 void PluginInstance::PageVisibilityChanged(bool is_visible) { |
| 816 if (is_visible == view_data_.is_page_visible) | 812 if (is_visible == view_data_.is_page_visible) |
| 817 return; // Nothing to do. | 813 return; // Nothing to do. |
| 818 ViewData old_data = view_data_; | 814 ViewData old_data = view_data_; |
| 819 view_data_.is_page_visible = is_visible; | 815 view_data_.is_page_visible = is_visible; |
| 820 SendDidChangeView(old_data); | 816 SendDidChangeView(old_data); |
| 821 } | 817 } |
| 822 | 818 |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1049 if (!plugin_zoom_interface_) { | 1045 if (!plugin_zoom_interface_) { |
| 1050 plugin_zoom_interface_ = | 1046 plugin_zoom_interface_ = |
| 1051 static_cast<const PPP_Zoom_Dev*>(module_->GetPluginInterface( | 1047 static_cast<const PPP_Zoom_Dev*>(module_->GetPluginInterface( |
| 1052 PPP_ZOOM_DEV_INTERFACE)); | 1048 PPP_ZOOM_DEV_INTERFACE)); |
| 1053 } | 1049 } |
| 1054 | 1050 |
| 1055 return !!plugin_zoom_interface_; | 1051 return !!plugin_zoom_interface_; |
| 1056 } | 1052 } |
| 1057 | 1053 |
| 1058 bool PluginInstance::PluginHasFocus() const { | 1054 bool PluginInstance::PluginHasFocus() const { |
| 1059 return has_webkit_focus_ && has_content_area_focus_; | 1055 return flash_fullscreen_ || (has_webkit_focus_ && has_content_area_focus_); |
| 1056 } | |
| 1057 | |
| 1058 void PluginInstance::SendFocusChangeNotification() { | |
| 1059 bool has_focus = PluginHasFocus(); | |
| 1060 delegate()->PluginFocusChanged(this, has_focus); | |
| 1061 instance_interface_->DidChangeFocus(pp_instance(), PP_FromBool(has_focus)); | |
| 1060 } | 1062 } |
| 1061 | 1063 |
| 1062 bool PluginInstance::IsAcceptingTouchEvents() const { | 1064 bool PluginInstance::IsAcceptingTouchEvents() const { |
| 1063 return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) || | 1065 return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) || |
| 1064 (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH); | 1066 (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH); |
| 1065 } | 1067 } |
| 1066 | 1068 |
| 1067 void PluginInstance::ScheduleAsyncDidChangeView( | 1069 void PluginInstance::ScheduleAsyncDidChangeView( |
| 1068 const ::ppapi::ViewData& previous_view) { | 1070 const ::ppapi::ViewData& previous_view) { |
| 1069 if (view_change_weak_ptr_factory_.HasWeakPtrs()) | 1071 if (view_change_weak_ptr_factory_.HasWeakPtrs()) |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1327 // Unbind current 2D or 3D graphics context. | 1329 // Unbind current 2D or 3D graphics context. |
| 1328 BindGraphics(pp_instance(), 0); | 1330 BindGraphics(pp_instance(), 0); |
| 1329 VLOG(1) << "Setting fullscreen to " << (fullscreen ? "on" : "off"); | 1331 VLOG(1) << "Setting fullscreen to " << (fullscreen ? "on" : "off"); |
| 1330 if (fullscreen) { | 1332 if (fullscreen) { |
| 1331 DCHECK(!fullscreen_container_); | 1333 DCHECK(!fullscreen_container_); |
| 1332 fullscreen_container_ = delegate_->CreateFullscreenContainer(this); | 1334 fullscreen_container_ = delegate_->CreateFullscreenContainer(this); |
| 1333 } else { | 1335 } else { |
| 1334 DCHECK(fullscreen_container_); | 1336 DCHECK(fullscreen_container_); |
| 1335 fullscreen_container_->Destroy(); | 1337 fullscreen_container_->Destroy(); |
| 1336 fullscreen_container_ = NULL; | 1338 fullscreen_container_ = NULL; |
| 1337 flash_fullscreen_ = false; | 1339 UpdateFlashFullscreenState(false); |
| 1338 if (!delay_report) { | 1340 if (!delay_report) { |
| 1339 ReportGeometry(); | 1341 ReportGeometry(); |
| 1340 } else { | 1342 } else { |
| 1341 MessageLoop::current()->PostTask( | 1343 MessageLoop::current()->PostTask( |
| 1342 FROM_HERE, base::Bind(&PluginInstance::ReportGeometry, this)); | 1344 FROM_HERE, base::Bind(&PluginInstance::ReportGeometry, this)); |
| 1343 } | 1345 } |
| 1344 } | 1346 } |
| 1345 } | 1347 } |
| 1346 | 1348 |
| 1349 void PluginInstance::UpdateFlashFullscreenState(bool flash_fullscreen) { | |
| 1350 if (flash_fullscreen == flash_fullscreen_) | |
| 1351 return; | |
| 1352 | |
| 1353 bool old_plugin_focus = PluginHasFocus(); | |
| 1354 flash_fullscreen_ = flash_fullscreen; | |
| 1355 if (PluginHasFocus() != old_plugin_focus) | |
|
brettw
2012/07/17 20:06:14
This seems wrong. The old_plugin_focus value was j
yzshen1
2012/07/18 01:17:58
PluginHasFocus() was changed and it is now determi
| |
| 1356 SendFocusChangeNotification(); | |
| 1357 } | |
| 1358 | |
| 1347 int32_t PluginInstance::Navigate(PPB_URLRequestInfo_Impl* request, | 1359 int32_t PluginInstance::Navigate(PPB_URLRequestInfo_Impl* request, |
| 1348 const char* target, | 1360 const char* target, |
| 1349 bool from_user_action) { | 1361 bool from_user_action) { |
| 1350 if (!container_) | 1362 if (!container_) |
| 1351 return PP_ERROR_FAILED; | 1363 return PP_ERROR_FAILED; |
| 1352 | 1364 |
| 1353 WebDocument document = container_->element().document(); | 1365 WebDocument document = container_->element().document(); |
| 1354 WebFrame* frame = document.frame(); | 1366 WebFrame* frame = document.frame(); |
| 1355 if (!frame) | 1367 if (!frame) |
| 1356 return PP_ERROR_FAILED; | 1368 return PP_ERROR_FAILED; |
| (...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2212 screen_size_for_fullscreen_ = gfx::Size(); | 2224 screen_size_for_fullscreen_ = gfx::Size(); |
| 2213 WebElement element = container_->element(); | 2225 WebElement element = container_->element(); |
| 2214 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); | 2226 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); |
| 2215 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); | 2227 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); |
| 2216 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); | 2228 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); |
| 2217 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); | 2229 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); |
| 2218 } | 2230 } |
| 2219 | 2231 |
| 2220 } // namespace ppapi | 2232 } // namespace ppapi |
| 2221 } // namespace webkit | 2233 } // namespace webkit |
| OLD | NEW |