Changeset 95303 in webkit


Ignore:
Timestamp:
Sep 16, 2011 10:31:31 AM (13 years ago)
Author:
igor.oliveira@openbossa.org
Message:

2011-09-16 Igor Oliveira <igor.oliveira@openbossa.org>

[WK2] mouseDidMoveOverElement needs to send more information about hovered element to UiProcess.
https://bugs.webkit.org/show_bug.cgi?id=68125

This patch implements support for the UiProcess to know what is the link url of a hovered element.

Reviewed by Anders Carlsson.

  • CMakeLists.txt:
  • GNUmakefile.am:
  • Shared/API/c/WKBase.h:
  • Shared/APIObject.h:
  • Shared/WebHitTestResult.cpp: Added.

WebHitTestResult has hovered element information.

(WebKit::WebHitTestResult::create):
(WebKit::WebHitTestResult::Data::encode):
(WebKit::WebHitTestResult::Data::decode):

  • Shared/WebHitTestResult.h: Added. (WebKit::WebHitTestResult::absoluteImageURL): (WebKit::WebHitTestResult::absoluteLinkURL): (WebKit::WebHitTestResult::absoluteMediaURL): (WebKit::WebHitTestResult::linkLabel): (WebKit::WebHitTestResult::linkTitle): (WebKit::WebHitTestResult::WebHitTestResult): (WebKit::WebHitTestResult::type):
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKPage.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::mouseDidMoveOverElement):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebUIClient.cpp: (WebKit::WebUIClient::mouseDidMoveOverElement):
  • UIProcess/WebUIClient.h:
  • WebKit2.pro:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::mouseDidMoveOverElement):
  • win/WebKit2.vcproj:
Location:
trunk/Source/WebKit2
Files:
2 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/CMakeLists.txt

    r95005 r95303  
    162162    Shared/WebGeolocationPosition.cpp
    163163    Shared/WebGraphicsContext.cpp
     164    Shared/WebHitTestResult.cpp
    164165    Shared/WebImage.cpp
    165166    Shared/WebKeyboardEvent.cpp
  • trunk/Source/WebKit2/ChangeLog

    r95300 r95303  
     12011-09-16  Igor Oliveira  <igor.oliveira@openbossa.org>
     2
     3        [WK2] mouseDidMoveOverElement needs to send more information about hovered element to UiProcess.
     4        https://bugs.webkit.org/show_bug.cgi?id=68125
     5
     6        This patch implements support for the UiProcess to know what is the link url of a hovered element.
     7
     8        Reviewed by Anders Carlsson.
     9
     10        * CMakeLists.txt:
     11        * GNUmakefile.am:
     12        * Shared/API/c/WKBase.h:
     13        * Shared/APIObject.h:
     14        * Shared/WebHitTestResult.cpp: Added.
     15
     16        WebHitTestResult has hovered element information.
     17
     18        (WebKit::WebHitTestResult::create):
     19        (WebKit::WebHitTestResult::Data::encode):
     20        (WebKit::WebHitTestResult::Data::decode):
     21        * Shared/WebHitTestResult.h: Added.
     22        (WebKit::WebHitTestResult::absoluteImageURL):
     23        (WebKit::WebHitTestResult::absoluteLinkURL):
     24        (WebKit::WebHitTestResult::absoluteMediaURL):
     25        (WebKit::WebHitTestResult::linkLabel):
     26        (WebKit::WebHitTestResult::linkTitle):
     27        (WebKit::WebHitTestResult::WebHitTestResult):
     28        (WebKit::WebHitTestResult::type):
     29        * UIProcess/API/C/WKAPICast.h:
     30        * UIProcess/API/C/WKPage.h:
     31        * UIProcess/WebPageProxy.cpp:
     32        (WebKit::WebPageProxy::mouseDidMoveOverElement):
     33        * UIProcess/WebPageProxy.h:
     34        * UIProcess/WebPageProxy.messages.in:
     35        * UIProcess/WebUIClient.cpp:
     36        (WebKit::WebUIClient::mouseDidMoveOverElement):
     37        * UIProcess/WebUIClient.h:
     38        * WebKit2.pro:
     39        * WebKit2.xcodeproj/project.pbxproj:
     40        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     41        (WebKit::WebChromeClient::mouseDidMoveOverElement):
     42        * win/WebKit2.vcproj:
     43
    1442011-09-15  Adam Roben  <aroben@apple.com>
    245
  • trunk/Source/WebKit2/GNUmakefile.am

    r95298 r95303  
    349349        Source/WebKit2/Shared/WebGraphicsContext.cpp \
    350350        Source/WebKit2/Shared/WebGraphicsContext.h \
     351        Source/WebKit2/Shared/WebHitTestResult.cpp \
     352        Source/WebKit2/Shared/WebHitTestResult.h \
    351353        Source/WebKit2/Shared/WebImage.cpp \
    352354        Source/WebKit2/Shared/WebImage.h \
  • trunk/Source/WebKit2/Shared/API/c/WKBase.h

    r81928 r95303  
    8585typedef const struct OpaqueWKGeolocationPermissionRequest* WKGeolocationPermissionRequestRef;
    8686typedef const struct OpaqueWKGeolocationPosition* WKGeolocationPositionRef;
     87typedef const struct OpaqueWKHitTestResult* WKHitTestResultRef;
    8788typedef const struct OpaqueWKIconDatabase* WKIconDatabaseRef;
    8889typedef const struct OpaqueWKInspector* WKInspectorRef;
  • trunk/Source/WebKit2/Shared/APIObject.h

    r83232 r95303  
    7676        TypeGeolocationManager,
    7777        TypeGeolocationPermissionRequest,
     78        TypeHitTestResult,
    7879        TypeGeolocationPosition,
    7980        TypeIconDatabase,
  • trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h

    r83778 r95303  
    6565class WebGeolocationManagerProxy;
    6666class WebGeolocationPosition;
     67class WebHitTestResult;
    6768class WebIconDatabase;
    6869class WebInspectorProxy;
     
    9596WK_ADD_API_MAPPING(WKGeolocationPermissionRequestRef, GeolocationPermissionRequestProxy)
    9697WK_ADD_API_MAPPING(WKGeolocationPositionRef, WebGeolocationPosition)
     98WK_ADD_API_MAPPING(WKHitTestResultRef, WebHitTestResult)
    9799WK_ADD_API_MAPPING(WKIconDatabaseRef, WebIconDatabase)
    98100WK_ADD_API_MAPPING(WKKeyValueStorageManagerRef, WebKeyValueStorageManagerProxy)
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.h

    r94247 r95303  
    169169typedef void (*WKPageUnfocusCallback)(WKPageRef page, const void *clientInfo);
    170170typedef void (*WKPageSetStatusTextCallback)(WKPageRef page, WKStringRef text, const void *clientInfo);
    171 typedef void (*WKPageMouseDidMoveOverElementCallback)(WKPageRef page, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo);
     171typedef void (*WKPageMouseDidMoveOverElementCallback)(WKPageRef page, WKHitTestResultRef hitTestResult, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo);
    172172typedef void (*WKPageMissingPluginButtonClickedCallback)(WKPageRef page, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
    173173typedef void (*WKPageDidNotHandleKeyEventCallback)(WKPageRef page, WKNativeEventPtr event, const void *clientInfo);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r95039 r95303  
    19981998}
    19991999
    2000 void WebPageProxy::mouseDidMoveOverElement(uint32_t opaqueModifiers, CoreIPC::ArgumentDecoder* arguments)
     2000void WebPageProxy::mouseDidMoveOverElement(const WebHitTestResult::Data& hitTestResultData, uint32_t opaqueModifiers, CoreIPC::ArgumentDecoder* arguments)
    20012001{
    20022002    RefPtr<APIObject> userData;
     
    20072007    WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
    20082008
    2009     m_uiClient.mouseDidMoveOverElement(this, modifiers, userData.get());
     2009    m_uiClient.mouseDidMoveOverElement(this, hitTestResultData, modifiers, userData.get());
    20102010}
    20112011
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r95039 r95303  
    4747#include "WebFrameProxy.h"
    4848#include "WebHistoryClient.h"
     49#include "WebHitTestResult.h"
    4950#include "WebLoaderClient.h"
    5051#include "WebPageContextMenuClient.h"
     
    5455#include "WebUIClient.h"
    5556#include <WebCore/DragActions.h>
     57#include <WebCore/HitTestResult.h>
    5658#include <WebCore/ScrollTypes.h>
    5759#include <WebCore/TextChecking.h>
     
    626628    void shouldInterruptJavaScript(bool& result);
    627629    void setStatusText(const String&);
    628     void mouseDidMoveOverElement(uint32_t modifiers, CoreIPC::ArgumentDecoder*);
     630    void mouseDidMoveOverElement(const WebHitTestResult::Data& hitTestResultData, uint32_t modifiers, CoreIPC::ArgumentDecoder*);
    629631    void missingPluginButtonClicked(const String& mimeType, const String& url, const String& pluginsPageURL);
    630632    void setToolbarsAreVisible(bool toolbarsAreVisible);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r93902 r95303  
    3030    RunJavaScriptPrompt(uint64_t frameID, WTF::String message, WTF::String defaultValue) -> (WTF::String result)
    3131    ShouldInterruptJavaScript() -> (bool shouldInterupt)
    32     MouseDidMoveOverElement(uint32_t modifiers, WebKit::InjectedBundleUserMessageEncoder userData);
     32    MouseDidMoveOverElement(WebKit::WebHitTestResult::Data hitTestResultData, uint32_t modifiers, WebKit::InjectedBundleUserMessageEncoder userData);
    3333    MissingPluginButtonClicked(WTF::String mimeType, WTF::String url, WTF::String pluginsPageURL)
    3434    DidChangeViewportData(WebCore::ViewportArguments arguments)
  • trunk/Source/WebKit2/UIProcess/WebUIClient.cpp

    r93902 r95303  
    156156}
    157157
    158 void WebUIClient::mouseDidMoveOverElement(WebPageProxy* page, WebEvent::Modifiers modifiers, APIObject* userData)
     158void WebUIClient::mouseDidMoveOverElement(WebPageProxy* page, const WebHitTestResult::Data& data, WebEvent::Modifiers modifiers, APIObject* userData)
    159159{
    160160    if (!m_client.mouseDidMoveOverElement)
    161161        return;
    162162
    163     m_client.mouseDidMoveOverElement(toAPI(page), toAPI(modifiers), toAPI(userData), m_client.clientInfo);
     163    RefPtr<WebHitTestResult> webHitTestResult = WebHitTestResult::create(data);
     164    m_client.mouseDidMoveOverElement(toAPI(page), toAPI(webHitTestResult.get()), toAPI(modifiers), toAPI(userData), m_client.clientInfo);
    164165}
    165166
  • trunk/Source/WebKit2/UIProcess/WebUIClient.h

    r93902 r95303  
    3030#include "WKPage.h"
    3131#include "WebEvent.h"
     32#include "WebHitTestResult.h"
    3233#include "WebOpenPanelParameters.h"
    3334#include <wtf/Forward.h>
     
    6869
    6970    void setStatusText(WebPageProxy*, const String&);
    70     void mouseDidMoveOverElement(WebPageProxy*, WebEvent::Modifiers, APIObject*);
     71    void mouseDidMoveOverElement(WebPageProxy*, const WebHitTestResult::Data&, WebEvent::Modifiers, APIObject*);
    7172    void missingPluginButtonClicked(WebPageProxy*, const String& mimeType, const String& url, const String& pluginsPageURL);
    7273   
  • trunk/Source/WebKit2/WebKit2.pro

    r94672 r95303  
    154154    Shared/WebGeolocationPosition.h \
    155155    Shared/WebGraphicsContext.h \
     156    Shared/WebHitTestResult.h \
    156157    Shared/WebImage.h \
    157158    Shared/WebNavigationDataStore.h \
     
    384385    Shared/WebGeolocationPosition.cpp \
    385386    Shared/WebGraphicsContext.cpp \
     387    Shared/WebHitTestResult.cpp \
    386388    Shared/WebKeyboardEvent.cpp \
    387389    Shared/WebImage.cpp \
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r95299 r95303  
    398398                6EE849C81368D9390038D481 /* WKInspectorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE849C61368D92D0038D481 /* WKInspectorMac.h */; settings = {ATTRIBUTES = (Public, ); }; };
    399399                762B748D120BC75C00819339 /* WKPreferencesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 762B7484120BBA2D00819339 /* WKPreferencesPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     400                7801C097142290C400FAF9AF /* WebHitTestResult.cpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7801C095142290C400FAF9AF /* WebHitTestResult.cpp */; };
     401                7801C098142290C400FAF9AF /* WebHitTestResult.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7801C096142290C400FAF9AF /* WebHitTestResult.h */; };
     402                7801C099142290C400FAF9AF /* WebHitTestResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7801C095142290C400FAF9AF /* WebHitTestResult.cpp */; };
     403                7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7801C096142290C400FAF9AF /* WebHitTestResult.h */; };
    400404                8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
    401405                8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
     
    912916                                1A50DB66110A3D57000D3FE5 /* WebProcess.app in CopyFiles */,
    913917                                BCDE0ABF13272708001259FB /* PluginProcess.app in CopyFiles */,
     918                                7801C097142290C400FAF9AF /* WebHitTestResult.cpp in CopyFiles */,
     919                                7801C098142290C400FAF9AF /* WebHitTestResult.h in CopyFiles */,
    914920                        );
    915921                        runOnlyForDeploymentPostprocessing = 0;
     
    13401346                762B7481120BBA0100819339 /* FontSmoothingLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontSmoothingLevel.h; sourceTree = "<group>"; };
    13411347                762B7484120BBA2D00819339 /* WKPreferencesPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPreferencesPrivate.h; sourceTree = "<group>"; };
     1348                7801C095142290C400FAF9AF /* WebHitTestResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebHitTestResult.cpp; path = Shared/WebHitTestResult.cpp; sourceTree = "<group>"; };
     1349                7801C096142290C400FAF9AF /* WebHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebHitTestResult.h; path = Shared/WebHitTestResult.h; sourceTree = "<group>"; };
    13421350                8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
    13431351                8DC2EF5B0486A6940098B216 /* WebKit2.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WebKit2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
     
    18791887                        isa = PBXGroup;
    18801888                        children = (
     1889                                7801C095142290C400FAF9AF /* WebHitTestResult.cpp */,
     1890                                7801C096142290C400FAF9AF /* WebHitTestResult.h */,
    18811891                                B396EA5512E0ED2D00F4FEB7 /* config.h */,
    18821892                                C0CE72DB1247E8F700BC0EC4 /* DerivedSources.make */,
     
    38473857                                5272B28B1406985D0096A5D0 /* StatisticsData.h in Headers */,
    38483858                                1A2BB6D114117B4D000F35D4 /* PluginProcessConnectionMessages.h in Headers */,
     3859                                7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */,
    38493860                        );
    38503861                        runOnlyForDeploymentPostprocessing = 0;
     
    45164527                                5272B28A1406985D0096A5D0 /* StatisticsData.cpp in Sources */,
    45174528                                1A2BB6D014117B4D000F35D4 /* PluginProcessConnectionMessageReceiver.cpp in Sources */,
     4529                                7801C099142290C400FAF9AF /* WebHitTestResult.cpp in Sources */,
    45184530                        );
    45194531                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r95271 r95303  
    497497    m_page->injectedBundleUIClient().mouseDidMoveOverElement(m_page, hitTestResult, static_cast<WebEvent::Modifiers>(modifierFlags), userData);
    498498
     499    WebHitTestResult::Data webHitTestResultData;
     500    webHitTestResultData.absoluteImageURL = hitTestResult.absoluteImageURL().string();
     501    webHitTestResultData.absoluteLinkURL = hitTestResult.absoluteLinkURL().string();
     502    webHitTestResultData.absoluteMediaURL = hitTestResult.absoluteMediaURL().string();
     503    webHitTestResultData.linkLabel = hitTestResult.textContent();
     504    webHitTestResultData.linkTitle = hitTestResult.titleDisplayString();
     505
    499506    // Notify the UIProcess.
    500     m_page->send(Messages::WebPageProxy::MouseDidMoveOverElement(modifierFlags, InjectedBundleUserMessageEncoder(userData.get())));
     507    m_page->send(Messages::WebPageProxy::MouseDidMoveOverElement(webHitTestResultData, modifierFlags, InjectedBundleUserMessageEncoder(userData.get())));
    501508}
    502509
  • trunk/Source/WebKit2/win/WebKit2.vcproj

    r95298 r95303  
    688688                        </File>
    689689                        <File
     690                                RelativePath="..\Shared\WebHitTestResult.cpp"
     691                                >
     692                        </File>
     693                        <File
     694                                RelativePath="..\Shared\WebHitTestResult.h"
     695                                >
     696                        </File>
     697                        <File
    690698                                RelativePath="..\Shared\WebKeyboardEvent.cpp"
    691699                                >
Note: See TracChangeset for help on using the changeset viewer.