Changeset 223211 in webkit


Ignore:
Timestamp:
Oct 11, 2017 3:21:58 PM (6 years ago)
Author:
Chris Dumez
Message:

[Geolocation] Expose Coordinates.floorLevel
https://bugs.webkit.org/show_bug.cgi?id=178173
<rdar://problem/34918936>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Expose Coordinates.floorLevel via the Geolocation API. This is currently
a WebKit-specific extension and it is only populated on iOS / WKTR / DRT.
It is null on other platforms.

Test: fast/dom/Geolocation/floorLevel.html

  • Modules/geolocation/Coordinates.h:

(WebCore::Coordinates::floorLevel const):

  • Modules/geolocation/Coordinates.idl:
  • Modules/geolocation/GeolocationPosition.h:

(WebCore::GeolocationPosition::encode const):
(WebCore::GeolocationPosition::decode):

  • Modules/geolocation/ios/GeolocationPositionIOS.mm:

(WebCore::GeolocationPosition::GeolocationPosition):

  • page/Settings.in:

Source/WebKit:

  • UIProcess/API/C/WKGeolocationPosition.cpp:

(WKGeolocationPositionCreate):
(WKGeolocationPositionCreate_b):
(WKGeolocationPositionCreate_c):

  • UIProcess/API/C/WKGeolocationPosition.h:

Tools:

Add test infrastructure for testing Coordinates.floorLevel.

  • DumpRenderTree/TestRunner.cpp:

(setMockGeolocationPositionCallback):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::setMockGeolocationPosition):

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::setMockGeolocationPosition):

  • WebKitTestRunner/GeolocationProviderMock.cpp:

(WTR::GeolocationProviderMock::setPosition):

  • WebKitTestRunner/GeolocationProviderMock.h:
  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::setMockGeolocationPosition):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setMockGeolocationPosition):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setMockGeolocationPosition):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Add layout test coverage.

  • fast/dom/Geolocation/floorLevel-expected.txt: Added.
  • fast/dom/Geolocation/floorLevel.html: Added.
Location:
trunk
Files:
2 added
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r223210 r223211  
     12017-10-11  Chris Dumez  <cdumez@apple.com>
     2
     3        [Geolocation] Expose Coordinates.floorLevel
     4        https://bugs.webkit.org/show_bug.cgi?id=178173
     5        <rdar://problem/34918936>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        Add layout test coverage.
     10
     11        * fast/dom/Geolocation/floorLevel-expected.txt: Added.
     12        * fast/dom/Geolocation/floorLevel.html: Added.
     13
    1142017-10-11  Simon Fraser  <simon.fraser@apple.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r223210 r223211  
     12017-10-11  Chris Dumez  <cdumez@apple.com>
     2
     3        [Geolocation] Expose Coordinates.floorLevel
     4        https://bugs.webkit.org/show_bug.cgi?id=178173
     5        <rdar://problem/34918936>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        Expose Coordinates.floorLevel via the Geolocation API. This is currently
     10        a WebKit-specific extension and it is only populated on iOS / WKTR / DRT.
     11        It is null on other platforms.
     12
     13        Test: fast/dom/Geolocation/floorLevel.html
     14
     15        * Modules/geolocation/Coordinates.h:
     16        (WebCore::Coordinates::floorLevel const):
     17        * Modules/geolocation/Coordinates.idl:
     18        * Modules/geolocation/GeolocationPosition.h:
     19        (WebCore::GeolocationPosition::encode const):
     20        (WebCore::GeolocationPosition::decode):
     21        * Modules/geolocation/ios/GeolocationPositionIOS.mm:
     22        (WebCore::GeolocationPosition::GeolocationPosition):
     23        * page/Settings.in:
     24
    1252017-10-11  Simon Fraser  <simon.fraser@apple.com>
    226
  • trunk/Source/WebCore/Modules/geolocation/Coordinates.h

    r223192 r223211  
    5252    std::optional<double> heading() const { return m_position.heading; }
    5353    std::optional<double> speed() const { return m_position.speed; }
     54    std::optional<double> floorLevel() const { return m_position.floorLevel; }
    5455   
    5556private:
  • trunk/Source/WebCore/Modules/geolocation/Coordinates.idl

    r168302 r223211  
    3636    readonly attribute unrestricted double? heading;
    3737    readonly attribute unrestricted double? speed;
     38    [EnabledBySetting=GeolocationFloorLevel] readonly attribute unrestricted double? floorLevel;
    3839};
  • trunk/Source/WebCore/Modules/geolocation/GeolocationPosition.h

    r223192 r223211  
    6363    std::optional<double> heading;
    6464    std::optional<double> speed;
     65    std::optional<double> floorLevel;
    6566
    6667    bool isValid() const;
     
    8182    encoder << heading;
    8283    encoder << speed;
     84    encoder << floorLevel;
    8385}
    8486
     
    102104    if (!decoder.decode(position.speed))
    103105        return false;
     106    if (!decoder.decode(position.floorLevel))
     107        return false;
    104108
    105109    return true;
  • trunk/Source/WebCore/Modules/geolocation/ios/GeolocationPositionIOS.mm

    r223192 r223211  
    4747    if (location.course >= 0.0)
    4848        heading = location.course;
     49    if (location.floor)
     50        floorLevel = location.floor.level;
    4951}
    5052
  • trunk/Source/WebCore/page/Settings.in

    r222926 r223211  
    296296beaconAPIEnabled initial=false
    297297
     298geolocationFloorLevelEnabled initial=true
     299
    298300constantPropertiesEnabled initial=false
    299301
  • trunk/Source/WebKit/ChangeLog

    r223207 r223211  
     12017-10-11  Chris Dumez  <cdumez@apple.com>
     2
     3        [Geolocation] Expose Coordinates.floorLevel
     4        https://bugs.webkit.org/show_bug.cgi?id=178173
     5        <rdar://problem/34918936>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        * UIProcess/API/C/WKGeolocationPosition.cpp:
     10        (WKGeolocationPositionCreate):
     11        (WKGeolocationPositionCreate_b):
     12        (WKGeolocationPositionCreate_c):
     13        * UIProcess/API/C/WKGeolocationPosition.h:
     14
    1152017-10-11  Youenn Fablet  <youenn@apple.com>
    216
  • trunk/Source/WebKit/UIProcess/API/C/WKGeolocationPosition.cpp

    r223192 r223211  
    3939WKGeolocationPositionRef WKGeolocationPositionCreate(double timestamp, double latitude, double longitude, double accuracy)
    4040{
    41     return WKGeolocationPositionCreate_b(timestamp, latitude, longitude, accuracy, false, 0., false, 0., false, 0., false, 0.);
     41    return WKGeolocationPositionCreate_c(timestamp, latitude, longitude, accuracy, false, 0., false, 0., false, 0., false, 0., false, 0.);
    4242}
    4343
    4444WKGeolocationPositionRef WKGeolocationPositionCreate_b(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
     45{
     46    return WKGeolocationPositionCreate_c(timestamp, latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, false, 0.);
     47}
     48
     49WKGeolocationPositionRef WKGeolocationPositionCreate_c(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel)
    4550{
    4651    WebCore::GeolocationPosition corePosition { timestamp, latitude, longitude, accuracy };
     
    5358    if (providesSpeed)
    5459        corePosition.speed = speed;
     60    if (providesFloorLevel)
     61        corePosition.floorLevel = floorLevel;
    5562
    5663    auto position = WebGeolocationPosition::create(WTFMove(corePosition));
  • trunk/Source/WebKit/UIProcess/API/C/WKGeolocationPosition.h

    r168541 r223211  
    3737WK_EXPORT WKGeolocationPositionRef WKGeolocationPositionCreate(double timestamp, double latitude, double longitude, double accuracy);
    3838WK_EXPORT WKGeolocationPositionRef WKGeolocationPositionCreate_b(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
     39WK_EXPORT WKGeolocationPositionRef WKGeolocationPositionCreate_c(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel);
    3940
    4041#ifdef __cplusplus
  • trunk/Tools/ChangeLog

    r223207 r223211  
     12017-10-11  Chris Dumez  <cdumez@apple.com>
     2
     3        [Geolocation] Expose Coordinates.floorLevel
     4        https://bugs.webkit.org/show_bug.cgi?id=178173
     5        <rdar://problem/34918936>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        Add test infrastructure for testing Coordinates.floorLevel.
     10
     11        * DumpRenderTree/TestRunner.cpp:
     12        (setMockGeolocationPositionCallback):
     13        * DumpRenderTree/TestRunner.h:
     14        * DumpRenderTree/mac/TestRunnerMac.mm:
     15        (TestRunner::setMockGeolocationPosition):
     16        * DumpRenderTree/win/TestRunnerWin.cpp:
     17        (TestRunner::setMockGeolocationPosition):
     18        * WebKitTestRunner/GeolocationProviderMock.cpp:
     19        (WTR::GeolocationProviderMock::setPosition):
     20        * WebKitTestRunner/GeolocationProviderMock.h:
     21        * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
     22        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
     23        (WTR::InjectedBundle::setMockGeolocationPosition):
     24        * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
     25        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
     26        (WTR::TestRunner::setMockGeolocationPosition):
     27        * WebKitTestRunner/InjectedBundle/TestRunner.h:
     28        * WebKitTestRunner/TestController.cpp:
     29        (WTR::TestController::setMockGeolocationPosition):
     30        * WebKitTestRunner/TestController.h:
     31        * WebKitTestRunner/TestInvocation.cpp:
     32        (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
     33
    1342017-10-11  Youenn Fablet  <youenn@apple.com>
    235
  • trunk/Tools/DumpRenderTree/TestRunner.cpp

    r220730 r223211  
    10201020    }
    10211021
     1022    bool canProvideFloorLevel = false;
     1023    double floorLevel = 0.;
     1024    if (argumentCount > 7 && !JSValueIsUndefined(context, arguments[7])) {
     1025        canProvideFloorLevel = true;
     1026        floorLevel = JSValueToNumber(context, arguments[7], 0);
     1027    }
     1028
    10221029    TestRunner* controller = reinterpret_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
    1023     controller->setMockGeolocationPosition(latitude, longitude, accuracy, canProvideAltitude, altitude, canProvideAltitudeAccuracy, altitudeAccuracy, canProvideHeading, heading, canProvideSpeed, speed);
     1030    controller->setMockGeolocationPosition(latitude, longitude, accuracy, canProvideAltitude, altitude, canProvideAltitudeAccuracy, altitudeAccuracy, canProvideHeading, heading, canProvideSpeed, speed, canProvideFloorLevel, floorLevel);
    10241031
    10251032    return JSValueMakeUndefined(context);
  • trunk/Tools/DumpRenderTree/TestRunner.h

    r222097 r223211  
    111111    void setMainFrameIsFirstResponder(bool flag);
    112112    void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
    113     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
     113    void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel);
    114114    void setMockGeolocationPositionUnavailableError(JSStringRef message);
    115115    void setPersistentUserStyleSheetLocation(JSStringRef path);
  • trunk/Tools/DumpRenderTree/mac/TestRunnerMac.mm

    r223192 r223211  
    443443}
    444444
    445 void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
     445void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel)
    446446{
    447447    WebGeolocationPosition *position = nil;
     
    459459        if (providesSpeed)
    460460            geolocationPosition.speed = speed;
     461        if (providesFloorLevel)
     462            geolocationPosition.floorLevel = floorLevel;
    461463        position = [[WebGeolocationPosition alloc] initWithGeolocationPosition:(WTFMove(geolocationPosition))];
    462464    }
  • trunk/Tools/DumpRenderTree/win/TestRunnerWin.cpp

    r222194 r223211  
    474474}
    475475
    476 void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
     476void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel)
    477477{
    478478    // FIXME: Implement for Geolocation layout tests.
  • trunk/Tools/WebKitTestRunner/GeolocationProviderMock.cpp

    r218183 r223211  
    6464}
    6565
    66 void GeolocationProviderMock::setPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
     66void GeolocationProviderMock::setPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel)
    6767{
    68     m_position.adopt(WKGeolocationPositionCreate_b(currentTime(), latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed));
     68    m_position.adopt(WKGeolocationPositionCreate_c(currentTime(), latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, providesFloorLevel, floorLevel));
    6969
    7070    m_hasError = false;
  • trunk/Tools/WebKitTestRunner/GeolocationProviderMock.h

    r218183 r223211  
    3636    ~GeolocationProviderMock();
    3737
    38     void setPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
     38    void setPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel);
    3939    void setPositionUnavailableError(WKStringRef errorMessage);
    4040
  • trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl

    r222097 r223211  
    190190    // Geolocation
    191191    void setGeolocationPermission(boolean value);
    192     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, optional object altitude, optional object altitudeAccuracy, optional object heading, optional object speed);
     192    void setMockGeolocationPosition(double latitude, double longitude, double accuracy, optional object altitude, optional object altitudeAccuracy, optional object heading, optional object speed, optional object floorLevel);
    193193    void setMockGeolocationPositionUnavailableError(DOMString errorMessage);
    194194    boolean isGeolocationProviderActive();
  • trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp

    r220626 r223211  
    539539}
    540540
    541 void InjectedBundle::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
     541void InjectedBundle::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel)
    542542{
    543543    WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetMockGeolocationPosition"));
     
    588588    WKRetainPtr<WKDoubleRef> speedWK(AdoptWK, WKDoubleCreate(speed));
    589589    WKDictionarySetItem(messageBody.get(), speedKeyWK.get(), speedWK.get());
     590
     591    WKRetainPtr<WKStringRef> providesFloorLevelKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesFloorLevel"));
     592    WKRetainPtr<WKBooleanRef> providesFloorLevelWK(AdoptWK, WKBooleanCreate(providesFloorLevel));
     593    WKDictionarySetItem(messageBody.get(), providesFloorLevelKeyWK.get(), providesFloorLevelWK.get());
     594
     595    WKRetainPtr<WKStringRef> floorLevelKeyWK(AdoptWK, WKStringCreateWithUTF8CString("floorLevel"));
     596    WKRetainPtr<WKDoubleRef> floorLevelWK(AdoptWK, WKDoubleCreate(floorLevel));
     597    WKDictionarySetItem(messageBody.get(), floorLevelKeyWK.get(), floorLevelWK.get());
    590598
    591599    WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
  • trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h

    r218773 r223211  
    9898    // Geolocation.
    9999    void setGeolocationPermission(bool);
    100     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
     100    void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel);
    101101    void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage);
    102102    bool isGeolocationProviderActive() const;
  • trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp

    r222097 r223211  
    887887}
    888888
    889 void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef jsAltitude, JSValueRef jsAltitudeAccuracy, JSValueRef jsHeading, JSValueRef jsSpeed)
     889void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef jsAltitude, JSValueRef jsAltitudeAccuracy, JSValueRef jsHeading, JSValueRef jsSpeed, JSValueRef jsFloorLevel)
    890890{
    891891    auto& injectedBundle = InjectedBundle::singleton();
     
    921921    }
    922922
    923     injectedBundle.setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
     923    bool providesFloorLevel = false;
     924    double floorLevel = 0.;
     925    if (!JSValueIsUndefined(context, jsFloorLevel)) {
     926        providesFloorLevel = true;
     927        floorLevel = JSValueToNumber(context, jsFloorLevel, 0);
     928    }
     929
     930    injectedBundle.setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, providesFloorLevel, floorLevel);
    924931}
    925932
  • trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h

    r222097 r223211  
    290290    // Geolocation.
    291291    void setGeolocationPermission(bool);
    292     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef altitude, JSValueRef altitudeAccuracy, JSValueRef heading, JSValueRef speed);
     292    void setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef altitude, JSValueRef altitudeAccuracy, JSValueRef heading, JSValueRef speed, JSValueRef floorLevel);
    293293    void setMockGeolocationPositionUnavailableError(JSStringRef message);
    294294    bool isGeolocationProviderActive();
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r223207 r223211  
    18711871}
    18721872
    1873 void TestController::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
    1874 {
    1875     m_geolocationProvider->setPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
     1873void TestController::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel)
     1874{
     1875    m_geolocationProvider->setPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, providesFloorLevel, floorLevel);
    18761876}
    18771877
  • trunk/Tools/WebKitTestRunner/TestController.h

    r222962 r223211  
    9595    // Geolocation.
    9696    void setGeolocationPermission(bool);
    97     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
     97    void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed, bool providesFloorLevel, double floorLevel);
    9898    void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage);
    9999    void handleGeolocationPermissionRequest(WKGeolocationPermissionRequestRef);
  • trunk/Tools/WebKitTestRunner/TestInvocation.cpp

    r220626 r223211  
    489489        double speed = WKDoubleGetValue(speedWK);
    490490
    491         TestController::singleton().setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
     491        WKRetainPtr<WKStringRef> providesFloorLevelKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesFloorLevel"));
     492        WKBooleanRef providesFloorLevelWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, providesFloorLevelKeyWK.get()));
     493        bool providesFloorLevel = WKBooleanGetValue(providesFloorLevelWK);
     494
     495        WKRetainPtr<WKStringRef> floorLevelKeyWK(AdoptWK, WKStringCreateWithUTF8CString("floorLevel"));
     496        WKDoubleRef floorLevelWK = static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, floorLevelKeyWK.get()));
     497        double floorLevel = WKDoubleGetValue(floorLevelWK);
     498
     499        TestController::singleton().setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, providesFloorLevel, floorLevel);
    492500        return;
    493501    }
Note: See TracChangeset for help on using the changeset viewer.