Changeset 223211 in webkit
- Timestamp:
- Oct 11, 2017 3:21:58 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r223210 r223211 1 2017-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 1 14 2017-10-11 Simon Fraser <simon.fraser@apple.com> 2 15 -
trunk/Source/WebCore/ChangeLog
r223210 r223211 1 2017-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 1 25 2017-10-11 Simon Fraser <simon.fraser@apple.com> 2 26 -
trunk/Source/WebCore/Modules/geolocation/Coordinates.h
r223192 r223211 52 52 std::optional<double> heading() const { return m_position.heading; } 53 53 std::optional<double> speed() const { return m_position.speed; } 54 std::optional<double> floorLevel() const { return m_position.floorLevel; } 54 55 55 56 private: -
trunk/Source/WebCore/Modules/geolocation/Coordinates.idl
r168302 r223211 36 36 readonly attribute unrestricted double? heading; 37 37 readonly attribute unrestricted double? speed; 38 [EnabledBySetting=GeolocationFloorLevel] readonly attribute unrestricted double? floorLevel; 38 39 }; -
trunk/Source/WebCore/Modules/geolocation/GeolocationPosition.h
r223192 r223211 63 63 std::optional<double> heading; 64 64 std::optional<double> speed; 65 std::optional<double> floorLevel; 65 66 66 67 bool isValid() const; … … 81 82 encoder << heading; 82 83 encoder << speed; 84 encoder << floorLevel; 83 85 } 84 86 … … 102 104 if (!decoder.decode(position.speed)) 103 105 return false; 106 if (!decoder.decode(position.floorLevel)) 107 return false; 104 108 105 109 return true; -
trunk/Source/WebCore/Modules/geolocation/ios/GeolocationPositionIOS.mm
r223192 r223211 47 47 if (location.course >= 0.0) 48 48 heading = location.course; 49 if (location.floor) 50 floorLevel = location.floor.level; 49 51 } 50 52 -
trunk/Source/WebCore/page/Settings.in
r222926 r223211 296 296 beaconAPIEnabled initial=false 297 297 298 geolocationFloorLevelEnabled initial=true 299 298 300 constantPropertiesEnabled initial=false 299 301 -
trunk/Source/WebKit/ChangeLog
r223207 r223211 1 2017-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 1 15 2017-10-11 Youenn Fablet <youenn@apple.com> 2 16 -
trunk/Source/WebKit/UIProcess/API/C/WKGeolocationPosition.cpp
r223192 r223211 39 39 WKGeolocationPositionRef WKGeolocationPositionCreate(double timestamp, double latitude, double longitude, double accuracy) 40 40 { 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.); 42 42 } 43 43 44 44 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) 45 { 46 return WKGeolocationPositionCreate_c(timestamp, latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, false, 0.); 47 } 48 49 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) 45 50 { 46 51 WebCore::GeolocationPosition corePosition { timestamp, latitude, longitude, accuracy }; … … 53 58 if (providesSpeed) 54 59 corePosition.speed = speed; 60 if (providesFloorLevel) 61 corePosition.floorLevel = floorLevel; 55 62 56 63 auto position = WebGeolocationPosition::create(WTFMove(corePosition)); -
trunk/Source/WebKit/UIProcess/API/C/WKGeolocationPosition.h
r168541 r223211 37 37 WK_EXPORT WKGeolocationPositionRef WKGeolocationPositionCreate(double timestamp, double latitude, double longitude, double accuracy); 38 38 WK_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); 39 WK_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); 39 40 40 41 #ifdef __cplusplus -
trunk/Tools/ChangeLog
r223207 r223211 1 2017-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 1 34 2017-10-11 Youenn Fablet <youenn@apple.com> 2 35 -
trunk/Tools/DumpRenderTree/TestRunner.cpp
r220730 r223211 1020 1020 } 1021 1021 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 1022 1029 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); 1024 1031 1025 1032 return JSValueMakeUndefined(context); -
trunk/Tools/DumpRenderTree/TestRunner.h
r222097 r223211 111 111 void setMainFrameIsFirstResponder(bool flag); 112 112 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); 114 114 void setMockGeolocationPositionUnavailableError(JSStringRef message); 115 115 void setPersistentUserStyleSheetLocation(JSStringRef path); -
trunk/Tools/DumpRenderTree/mac/TestRunnerMac.mm
r223192 r223211 443 443 } 444 444 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 )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, bool providesFloorLevel, double floorLevel) 446 446 { 447 447 WebGeolocationPosition *position = nil; … … 459 459 if (providesSpeed) 460 460 geolocationPosition.speed = speed; 461 if (providesFloorLevel) 462 geolocationPosition.floorLevel = floorLevel; 461 463 position = [[WebGeolocationPosition alloc] initWithGeolocationPosition:(WTFMove(geolocationPosition))]; 462 464 } -
trunk/Tools/DumpRenderTree/win/TestRunnerWin.cpp
r222194 r223211 474 474 } 475 475 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 )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, bool providesFloorLevel, double floorLevel) 477 477 { 478 478 // FIXME: Implement for Geolocation layout tests. -
trunk/Tools/WebKitTestRunner/GeolocationProviderMock.cpp
r218183 r223211 64 64 } 65 65 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 )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, bool providesFloorLevel, double floorLevel) 67 67 { 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)); 69 69 70 70 m_hasError = false; -
trunk/Tools/WebKitTestRunner/GeolocationProviderMock.h
r218183 r223211 36 36 ~GeolocationProviderMock(); 37 37 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); 39 39 void setPositionUnavailableError(WKStringRef errorMessage); 40 40 -
trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
r222097 r223211 190 190 // Geolocation 191 191 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); 193 193 void setMockGeolocationPositionUnavailableError(DOMString errorMessage); 194 194 boolean isGeolocationProviderActive(); -
trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
r220626 r223211 539 539 } 540 540 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 )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, bool providesFloorLevel, double floorLevel) 542 542 { 543 543 WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetMockGeolocationPosition")); … … 588 588 WKRetainPtr<WKDoubleRef> speedWK(AdoptWK, WKDoubleCreate(speed)); 589 589 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()); 590 598 591 599 WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get()); -
trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
r218773 r223211 98 98 // Geolocation. 99 99 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); 101 101 void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage); 102 102 bool isGeolocationProviderActive() const; -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
r222097 r223211 887 887 } 888 888 889 void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef jsAltitude, JSValueRef jsAltitudeAccuracy, JSValueRef jsHeading, JSValueRef jsSpeed )889 void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef jsAltitude, JSValueRef jsAltitudeAccuracy, JSValueRef jsHeading, JSValueRef jsSpeed, JSValueRef jsFloorLevel) 890 890 { 891 891 auto& injectedBundle = InjectedBundle::singleton(); … … 921 921 } 922 922 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); 924 931 } 925 932 -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
r222097 r223211 290 290 // Geolocation. 291 291 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); 293 293 void setMockGeolocationPositionUnavailableError(JSStringRef message); 294 294 bool isGeolocationProviderActive(); -
trunk/Tools/WebKitTestRunner/TestController.cpp
r223207 r223211 1871 1871 } 1872 1872 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 );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, bool providesFloorLevel, double floorLevel) 1874 { 1875 m_geolocationProvider->setPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed, providesFloorLevel, floorLevel); 1876 1876 } 1877 1877 -
trunk/Tools/WebKitTestRunner/TestController.h
r222962 r223211 95 95 // Geolocation. 96 96 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); 98 98 void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage); 99 99 void handleGeolocationPermissionRequest(WKGeolocationPermissionRequestRef); -
trunk/Tools/WebKitTestRunner/TestInvocation.cpp
r220626 r223211 489 489 double speed = WKDoubleGetValue(speedWK); 490 490 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); 492 500 return; 493 501 }
Note: See TracChangeset
for help on using the changeset viewer.