Changeset 209198 in webkit
- Timestamp:
- Dec 1, 2016 1:39:18 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 1 added
- 4 edited
- 2 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r209184 r209198 30 30 "${WEBCORE_DIR}/Modules/webaudio" 31 31 "${WEBCORE_DIR}/Modules/webdatabase" 32 "${WEBCORE_DIR}/Modules/webdriver" 32 33 "${WEBCORE_DIR}/Modules/websockets" 33 34 "${WEBCORE_DIR}/accessibility" … … 313 314 Modules/webdatabase/SQLTransactionCallback.idl 314 315 Modules/webdatabase/SQLTransactionErrorCallback.idl 316 317 Modules/webdriver/NavigatorWebDriver.idl 315 318 316 319 Modules/websockets/CloseEvent.idl … … 1017 1020 Modules/webdatabase/SQLTransactionCoordinator.cpp 1018 1021 Modules/webdatabase/SQLTransactionStateMachine.cpp 1022 1023 Modules/webdriver/NavigatorWebDriver.cpp 1019 1024 1020 1025 Modules/websockets/ThreadableWebSocketChannel.cpp -
trunk/Source/WebCore/ChangeLog
r209197 r209198 1 2016-12-01 Brian Burg <bburg@apple.com> 2 3 Web Automation: expose navigator.webdriver if the page is controlled by automation 4 https://bugs.webkit.org/show_bug.cgi?id=165245 5 <rdar://problem/29449874> 6 7 Reviewed by Joseph Pecoraro. 8 9 Move the implementation into OpenSource. It's in Modules/webdriver/. 10 11 * CMakeLists.txt: 12 * DerivedSources.make: 13 Add new paths and files. 14 15 * Modules/webdriver/NavigatorWebDriver.cpp: Added. 16 (WebCore::NavigatorWebDriver::NavigatorWebDriver): 17 (WebCore::NavigatorWebDriver::~NavigatorWebDriver): 18 (WebCore::NavigatorWebDriver::supplementName): 19 (WebCore::NavigatorWebDriver::isControlledByAutomation): 20 (WebCore::NavigatorWebDriver::from): 21 (WebCore::JSNavigator::webdriver): 22 * Modules/webdriver/NavigatorWebDriver.h: Added. 23 * Modules/webdriver/NavigatorWebDriver.idl: Added. 24 * WebCore.xcodeproj/project.pbxproj: 25 1 26 2016-12-01 Brady Eidson <beidson@apple.com> 2 27 -
trunk/Source/WebCore/DerivedSources.make
r209184 r209198 49 49 $(WebCore)/Modules/webaudio \ 50 50 $(WebCore)/Modules/webdatabase \ 51 $(WebCore)/Modules/webdriver \ 51 52 $(WebCore)/Modules/websockets \ 52 53 $(WebCore)/animation \ … … 241 242 $(WebCore)/Modules/webdatabase/SQLTransactionCallback.idl \ 242 243 $(WebCore)/Modules/webdatabase/SQLTransactionErrorCallback.idl \ 244 $(WebCore)/Modules/webdriver/NavigatorWebDriver.idl \ 243 245 $(WebCore)/Modules/websockets/CloseEvent.idl \ 244 246 $(WebCore)/Modules/websockets/WebSocket.idl \ -
trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.cpp
r209197 r209198 25 25 26 26 #include "config.h" 27 #include "NavigatorWebDriver.h" 27 28 28 #if USE(APPLE_INTERNAL_SDK) 29 #include <WebKitAdditions/WebCoreAdditions.cpp> 30 #endif 29 #include "Frame.h" 30 #include "JSNavigator.h" 31 #include "Navigator.h" 32 #include "Page.h" 31 33 34 using namespace JSC; 35 36 namespace WebCore { 37 38 NavigatorWebDriver::NavigatorWebDriver(Frame* frame) 39 : m_frame(frame) 40 { 41 } 42 43 NavigatorWebDriver::~NavigatorWebDriver() 44 { 45 } 46 47 const char* NavigatorWebDriver::supplementName() 48 { 49 return "NavigatorWebDriver"; 50 } 51 52 bool NavigatorWebDriver::isControlledByAutomation() const 53 { 54 if (!m_frame || !m_frame->page()) 55 return false; 56 57 return m_frame->page()->isControlledByAutomation(); 58 } 59 60 NavigatorWebDriver* NavigatorWebDriver::from(Navigator* navigator) 61 { 62 NavigatorWebDriver* supplement = static_cast<NavigatorWebDriver*>(Supplement<Navigator>::from(navigator, supplementName())); 63 if (!supplement) { 64 auto newSupplement = std::make_unique<NavigatorWebDriver>(navigator->frame()); 65 supplement = newSupplement.get(); 66 provideTo(navigator, supplementName(), WTFMove(newSupplement)); 67 } 68 return supplement; 69 } 70 71 JSValue JSNavigator::webdriver(ExecState&) const 72 { 73 bool isControlledByAutomation = NavigatorWebDriver::from(&wrapped())->isControlledByAutomation(); 74 return isControlledByAutomation ? jsBoolean(true) : jsUndefined(); 75 } 76 77 } // namespace WebCore -
trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.h
r209197 r209198 24 24 */ 25 25 26 # include "config.h"26 #pragma once 27 27 28 #if USE(APPLE_INTERNAL_SDK) 29 #include <WebKitAdditions/WebCoreAdditions.cpp> 30 #endif 28 #include "Supplementable.h" 31 29 30 namespace WebCore { 31 32 class Frame; 33 class Navigator; 34 35 class NavigatorWebDriver final : public Supplement<Navigator> { 36 public: 37 explicit NavigatorWebDriver(Frame*); 38 virtual ~NavigatorWebDriver(); 39 40 bool isControlledByAutomation() const; 41 42 static NavigatorWebDriver* from(Navigator*); 43 static bool isControlledByAutomation(Navigator& navigator); 44 private: 45 static const char* supplementName(); 46 47 Frame* m_frame { nullptr }; 48 }; 49 50 } // namespace WebCore -
trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.idl
r209197 r209198 24 24 */ 25 25 26 #include "config.h" 27 28 #if USE(APPLE_INTERNAL_SDK) 29 #include <WebKitAdditions/WebCoreAdditions.cpp> 30 #endif 31 26 partial interface Navigator { 27 [NotEnumerable, Custom] readonly attribute boolean webdriver; 28 }; -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r209184 r209198 801 801 1A762C790A074F2600989F5B /* JSXPathResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A762C710A074F2600989F5B /* JSXPathResult.cpp */; }; 802 802 1A762C7A0A074F2600989F5B /* JSXPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A762C720A074F2600989F5B /* JSXPathResult.h */; settings = {ATTRIBUTES = (Private, ); }; }; 803 1A7E19461C5863BE00CCDDF3 /* WebKitAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A7E19441C5863BE00CCDDF3 /* WebKitAdditions.mm */; };804 803 1A7E3C291710997300367935 /* ThreadableLoaderClientWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7E3C281710997300367935 /* ThreadableLoaderClientWrapper.h */; }; 805 804 1A7FA6190DDA3B3A0028F8A5 /* NetworkStateNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7FA6180DDA3B3A0028F8A5 /* NetworkStateNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 3775 3774 9920398218B95BC600B39AF9 /* UserInputBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9920398018B95BC600B39AF9 /* UserInputBridge.cpp */; }; 3776 3775 9920398318B95BC600B39AF9 /* UserInputBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9920398118B95BC600B39AF9 /* UserInputBridge.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3776 996E59DE1DF01285006612B9 /* NavigatorWebDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 996E59DB1DF00D90006612B9 /* NavigatorWebDriver.cpp */; }; 3777 996E59DF1DF0128D006612B9 /* NavigatorWebDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 996E59DC1DF00D90006612B9 /* NavigatorWebDriver.h */; }; 3777 3778 99C7CCB318C663E40032E413 /* MemoizedDOMResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C7CCB218C663E40032E413 /* MemoizedDOMResult.h */; }; 3778 3779 99C7CCB518C6B8990032E413 /* MemoizedDOMResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 99C7CCB418C6B8990032E413 /* MemoizedDOMResult.cpp */; }; … … 7839 7840 1A762C710A074F2600989F5B /* JSXPathResult.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathResult.cpp; sourceTree = "<group>"; }; 7840 7841 1A762C720A074F2600989F5B /* JSXPathResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXPathResult.h; sourceTree = "<group>"; }; 7841 1A7E19441C5863BE00CCDDF3 /* WebKitAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebKitAdditions.mm; sourceTree = "<group>"; };7842 7842 1A7E3C281710997300367935 /* ThreadableLoaderClientWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableLoaderClientWrapper.h; sourceTree = "<group>"; }; 7843 7843 1A7FA6180DDA3B3A0028F8A5 /* NetworkStateNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStateNotifier.h; sourceTree = "<group>"; }; … … 11409 11409 9920398018B95BC600B39AF9 /* UserInputBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserInputBridge.cpp; sourceTree = "<group>"; }; 11410 11410 9920398118B95BC600B39AF9 /* UserInputBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserInputBridge.h; sourceTree = "<group>"; }; 11411 996E59DB1DF00D90006612B9 /* NavigatorWebDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigatorWebDriver.cpp; sourceTree = "<group>"; }; 11412 996E59DC1DF00D90006612B9 /* NavigatorWebDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorWebDriver.h; sourceTree = "<group>"; }; 11413 996E59DD1DF00D90006612B9 /* NavigatorWebDriver.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorWebDriver.idl; sourceTree = "<group>"; }; 11411 11414 99C7CCB218C663E40032E413 /* MemoizedDOMResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoizedDOMResult.h; sourceTree = "<group>"; }; 11412 11415 99C7CCB418C6B8990032E413 /* MemoizedDOMResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoizedDOMResult.cpp; sourceTree = "<group>"; }; … … 19126 19129 FD315FA212B025B100C1A359 /* webaudio */, 19127 19130 97BC69D51505F054001B74AC /* webdatabase */, 19131 996E59DA1DF00D45006612B9 /* webdriver */, 19128 19132 97AABCF714FA09B5007457AE /* websockets */, 19129 19133 ); … … 19442 19446 sourceTree = "<group>"; 19443 19447 }; 19448 996E59DA1DF00D45006612B9 /* webdriver */ = { 19449 isa = PBXGroup; 19450 children = ( 19451 996E59DB1DF00D90006612B9 /* NavigatorWebDriver.cpp */, 19452 996E59DC1DF00D90006612B9 /* NavigatorWebDriver.h */, 19453 996E59DD1DF00D90006612B9 /* NavigatorWebDriver.idl */, 19454 ); 19455 path = webdriver; 19456 sourceTree = "<group>"; 19457 }; 19444 19458 99E45A1318A021760026D88F /* replay */ = { 19445 19459 isa = PBXGroup; … … 19650 19664 CDC979F31C498C0900DB50D4 /* WebCoreNSErrorExtras.h */, 19651 19665 CDC979F21C498C0900DB50D4 /* WebCoreNSErrorExtras.mm */, 19652 1A7E19441C5863BE00CCDDF3 /* WebKitAdditions.mm */,19653 19666 5DFEBAB618592B6D00C75BEB /* WebKitAvailability.h */, 19654 19667 CDA29A081CBD99F400901CCF /* WebPlaybackSessionInterface.h */, … … 25232 25245 E11003311C9AC3DE00412DD0 /* CSSGridAutoRepeatValue.h in Headers */, 25233 25246 CD7DBB2918CA19C600C11066 /* CSSGridLineNamesValue.h in Headers */, 25247 996E59DF1DF0128D006612B9 /* NavigatorWebDriver.h in Headers */, 25234 25248 CD3E252418046BCD00E27F56 /* CSSGridTemplateAreasValue.h in Headers */, 25235 25249 FB3056C2169E5DAC0096A232 /* CSSGroupingRule.h in Headers */, … … 29644 29658 A77979190D6B9D0C003851B9 /* ImageData.cpp in Sources */, 29645 29659 555B87EC1CAAF0AB00349425 /* ImageDecoderCG.cpp in Sources */, 29660 996E59DE1DF01285006612B9 /* NavigatorWebDriver.cpp in Sources */, 29646 29661 97205AB51239291000B17380 /* ImageDocument.cpp in Sources */, 29647 29662 5576A5641D88A70800CCC04C /* ImageFrame.cpp in Sources */, … … 31735 31750 A5840E24187B8AC200843B10 /* WebInjectedScriptHost.cpp in Sources */, 31736 31751 A584FE2F1864CB8400843B10 /* WebInjectedScriptManager.cpp in Sources */, 31737 1A7E19461C5863BE00CCDDF3 /* WebKitAdditions.mm in Sources */,31738 31752 31C0FF210E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp in Sources */, 31739 31753 976D6C7B122B8A3D001FD1F7 /* BlobBuilder.cpp in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.