Changeset 135315 in webkit
- Timestamp:
- Nov 20, 2012, 2:41:29 PM (12 years ago)
- Location:
- trunk/Source/WebKit/chromium
- Files:
-
- 4 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/chromium/ChangeLog
r135313 r135315 1 2012-11-20 Istiaque Ahmed <lazyboy@chromium.org> 2 3 Provide page/window coordinates to plugin's local coordinates translation in WebPluginContainer. 4 https://bugs.webkit.org/show_bug.cgi?id=102339 5 6 Reviewed by Adam Barth. 7 8 This change will allow converting a page's window coordinates to plugins's local coordinates, 9 taking CSS transformations into account. Embedder page of the plugin can use this information 10 for targetting elements inside the plugin (e.g. devtools can inspect a specific element at the 11 local coordinate position inside plugin). 12 13 * WebKit.gyp: 14 * WebKit.gypi: 15 * public/WebNode.h: 16 (WebKit): 17 * public/WebPluginContainer.h: 18 (WebKit): 19 (WebPluginContainer): 20 * src/WebFrameImpl.cpp: 21 (WebKit::WebFrameImpl::executeCommand): 22 (WebKit::WebFrameImpl::printBegin): 23 (WebKit::WebFrameImpl::isPrintScalingDisabledForPlugin): 24 * src/WebNode.cpp: 25 (WebKit::WebNode::pluginContainer): 26 (WebKit): 27 * src/WebPluginContainerImpl.cpp: 28 (WebKit::WebPluginContainerImpl::windowToLocalPoint): 29 (WebKit): 30 * src/WebPluginContainerImpl.h: 31 (WebPluginContainerImpl): 32 * tests/FakeWebPlugin.cpp: Added. 33 (WebKit): 34 (WebKit::FakeWebPlugin::FakeWebPlugin): 35 (WebKit::FakeWebPlugin::~FakeWebPlugin): 36 (WebKit::FakeWebPlugin::initialize): 37 (WebKit::FakeWebPlugin::destroy): 38 * tests/FakeWebPlugin.h: Added. 39 (WebKit): 40 (FakeWebPlugin): 41 * tests/WebPluginContainerTest.cpp: Added. 42 (WebKit): 43 (WebPluginContainerTest): 44 (WebKit::WebPluginContainerTest::WebPluginContainerTest): 45 (WebKit::WebPluginContainerTest::TearDown): 46 (WebKit::getWebPluginContainer): 47 (WebKit::TEST_F): 48 * tests/data/plugin_container.html: Added. 49 1 50 2012-11-20 Alpha Lam <hclam@chromium.org> 2 51 -
trunk/Source/WebKit/chromium/WebKit.gyp
r135197 r135315 718 718 'tests/AssociatedURLLoaderTest.cpp', 719 719 'tests/EventListenerTest.cpp', 720 'tests/FakeWebPlugin.cpp', 720 721 'tests/FrameTestHelpers.cpp', 721 722 'tests/IDBBindingUtilitiesTest.cpp', … … 732 733 'tests/WebPageNewSerializerTest.cpp', 733 734 'tests/WebPageSerializerTest.cpp', 735 'tests/WebPluginContainerTest.cpp', 734 736 'tests/WebViewTest.cpp', 735 737 ], -
trunk/Source/WebKit/chromium/WebKit.gypi
r135094 r135315 65 65 'tests/DragImageTest.cpp', 66 66 'tests/EventListenerTest.cpp', 67 'tests/FakeWebPlugin.cpp', 68 'tests/FakeWebPlugin.h', 67 69 'tests/FakeWebCompositorOutputSurface.h', 68 70 'tests/FakeWebGraphicsContext3D.h', … … 114 116 'tests/WebPageNewSerializerTest.cpp', 115 117 'tests/WebPageSerializerTest.cpp', 118 'tests/WebPluginContainerTest.cpp', 116 119 'tests/WebSocketDeflaterTest.cpp', 117 120 'tests/WebSocketExtensionDispatcherTest.cpp', -
trunk/Source/WebKit/chromium/public/WebNode.h
r135094 r135315 46 46 class WebFrame; 47 47 class WebNodeList; 48 class WebPluginContainer; 48 49 49 50 // Provides access to some properties of a DOM node. … … 120 121 // Note: This method only works properly after layout has occurred. 121 122 WEBKIT_EXPORT bool hasNonEmptyBoundingBox() const; 123 WEBKIT_EXPORT WebPluginContainer* pluginContainer() const; 122 124 123 125 template<typename T> T to() -
trunk/Source/WebKit/chromium/public/WebPluginContainer.h
r135178 r135315 32 32 #define WebPluginContainer_h 33 33 34 #include "platform/WebCommon.h" 35 34 36 struct NPObject; 35 37 … … 41 43 class WebURL; 42 44 class WebURLRequest; 45 struct WebPoint; 43 46 struct WebRect; 44 47 … … 118 121 virtual void setWantsWheelEvents(bool) = 0; 119 122 123 // Converts view's window coordinates to plugin's local coordinates. 124 virtual WebPoint windowToLocalPoint(const WebPoint&) = 0; 125 120 126 virtual WebPlugin* plugin() = 0; 121 127 virtual void setPlugin(WebPlugin*) = 0; -
trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp
r135310 r135315 131 131 #include "RenderTreeAsText.h" 132 132 #include "RenderView.h" 133 #include "RenderWidget.h"134 133 #include "ResourceHandle.h" 135 134 #include "ResourceRequest.h" … … 305 304 } 306 305 307 static WebPluginContainerImpl* pluginContainerFromNode(const WebNode& node)308 {309 if (node.isNull())310 return 0;311 312 const Node* coreNode = node.constUnwrap<Node>();313 if (coreNode->hasTagName(HTMLNames::objectTag) || coreNode->hasTagName(HTMLNames::embedTag)) {314 RenderObject* object = coreNode->renderer();315 if (object && object->isWidget()) {316 Widget* widget = toRenderWidget(object)->widget();317 if (widget && widget->isPluginContainer())318 return static_cast<WebPluginContainerImpl*>(widget);319 }320 }321 return 0;322 }323 324 306 WebPluginContainerImpl* WebFrameImpl::pluginContainerFromFrame(Frame* frame) 325 307 { … … 1233 1215 WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame()); 1234 1216 if (!pluginContainer) 1235 pluginContainer = pluginContainerFromNode(node);1217 pluginContainer = static_cast<WebPluginContainerImpl*>(node.pluginContainer()); 1236 1218 if (pluginContainer) { 1237 1219 pluginContainer->copy(); … … 1429 1411 } else { 1430 1412 // We only support printing plugin nodes for now. 1431 pluginContainer = pluginContainerFromNode(constrainToNode);1413 pluginContainer = static_cast<WebPluginContainerImpl*>(constrainToNode.pluginContainer()); 1432 1414 } 1433 1415 … … 1478 1460 bool WebFrameImpl::isPrintScalingDisabledForPlugin(const WebNode& node) 1479 1461 { 1480 WebPluginContainerImpl* pluginContainer = node.isNull() ? pluginContainerFromFrame(frame()) : pluginContainerFromNode(node);1462 WebPluginContainerImpl* pluginContainer = node.isNull() ? pluginContainerFromFrame(frame()) : static_cast<WebPluginContainerImpl*>(node.pluginContainer()); 1481 1463 1482 1464 if (!pluginContainer || !pluginContainer->supportsPaginatedPrint()) -
trunk/Source/WebKit/chromium/src/WebNode.cpp
r135094 r135315 39 39 #include "NodeList.h" 40 40 #include "EventListenerWrapper.h" 41 #include "RenderObject.h" 42 #include "RenderWidget.h" 41 43 #include "WebDOMEvent.h" 42 44 #include "WebDOMEventListener.h" … … 45 47 #include "WebFrameImpl.h" 46 48 #include "WebNodeList.h" 49 #include "WebPluginContainer.h" 50 #include "WebPluginContainerImpl.h" 51 #include "Widget.h" 47 52 #include "markup.h" 48 53 #include <public/WebString.h> … … 236 241 } 237 242 243 WebPluginContainer* WebNode::pluginContainer() const 244 { 245 if (isNull()) 246 return 0; 247 const Node* coreNode = constUnwrap<Node>(); 248 if (coreNode->hasTagName(HTMLNames::objectTag) || coreNode->hasTagName(HTMLNames::embedTag)) { 249 RenderObject* object = coreNode->renderer(); 250 if (object && object->isWidget()) { 251 Widget* widget = WebCore::toRenderWidget(object)->widget(); 252 if (widget && widget->isPluginContainer()) 253 return static_cast<WebPluginContainerImpl*>(widget); 254 } 255 } 256 return 0; 257 } 258 238 259 WebNode::WebNode(const PassRefPtr<Node>& node) 239 260 : m_private(node) -
trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp
r135178 r135315 546 546 } 547 547 548 WebPoint WebPluginContainerImpl::windowToLocalPoint(const WebPoint& point) 549 { 550 ScrollView* view = parent(); 551 if (!view) 552 return point; 553 WebPoint windowPoint = view->windowToContents(point); 554 return roundedIntPoint(m_element->renderer()->absoluteToLocal(LayoutPoint(windowPoint), UseTransforms | SnapOffsetForTransforms)); 555 } 556 548 557 void WebPluginContainerImpl::didReceiveResponse(const ResourceResponse& response) 549 558 { -
trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h
r135178 r135315 116 116 virtual void setIsAcceptingTouchEvents(bool); 117 117 virtual void setWantsWheelEvents(bool); 118 virtual WebPoint windowToLocalPoint(const WebPoint&); 118 119 119 120 // This cannot be null.
Note:
See TracChangeset
for help on using the changeset viewer.