Changeset 217391 in webkit


Ignore:
Timestamp:
May 24, 2017 4:05:53 PM (7 years ago)
Author:
commit-queue@webkit.org
Message:

navigator.webdriver should return false if the page is not controlled by automation
https://bugs.webkit.org/show_bug.cgi?id=171997

Patch by Sergey Shekyan <shekyan@gmail.com> on 2017-05-24
Reviewed by Chris Dumez.

Per WebDriver Specification at https://www.w3.org/TR/webdriver/#interface

Test: js/dom/navigator-webdriver.html
Rebaseled fast/dom/navigator-detached-no-crash.html

  • Modules/webdriver/NavigatorWebDriver.cpp:

(WebCore::NavigatorWebDriver::NavigatorWebDriver):
(WebCore::NavigatorWebDriver::isControlledByAutomation):
(WebCore::NavigatorWebDriver::from):
(WebCore::NavigatorWebDriver::webdriver):
(WebCore::JSNavigator::webdriver): Deleted.

  • Modules/webdriver/NavigatorWebDriver.h:
  • Modules/webdriver/NavigatorWebDriver.idl:
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/fast/dom/navigator-detached-no-crash-expected.txt

    r207021 r217391  
    1919navigator.vendor is OK
    2020navigator.vendorSub is OK
     21navigator.webdriver is OK
    2122navigator.appCodeName is OK
    2223navigator.appName is OK
     
    3738navigator.vendor is OK
    3839navigator.vendorSub is OK
     40navigator.webdriver is OK
    3941
  • trunk/Source/WebCore/ChangeLog

    r217388 r217391  
     12017-05-24  Sergey Shekyan  <shekyan@gmail.com>
     2
     3        navigator.webdriver should return false if the page is not controlled by automation
     4        https://bugs.webkit.org/show_bug.cgi?id=171997
     5
     6        Reviewed by Chris Dumez.
     7
     8        Per WebDriver Specification at https://www.w3.org/TR/webdriver/#interface
     9
     10        Test: js/dom/navigator-webdriver.html
     11        Rebaseled fast/dom/navigator-detached-no-crash.html
     12
     13        * Modules/webdriver/NavigatorWebDriver.cpp:
     14        (WebCore::NavigatorWebDriver::NavigatorWebDriver):
     15        (WebCore::NavigatorWebDriver::isControlledByAutomation):
     16        (WebCore::NavigatorWebDriver::from):
     17        (WebCore::NavigatorWebDriver::webdriver):
     18        (WebCore::JSNavigator::webdriver): Deleted.
     19        * Modules/webdriver/NavigatorWebDriver.h:
     20        * Modules/webdriver/NavigatorWebDriver.idl:
     21
    1222017-05-24  Ryan Haddad  <ryanhaddad@apple.com>
    223
  • trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.cpp

    r210697 r217391  
    2828
    2929#include "Frame.h"
    30 #include "JSNavigator.h"
    3130#include "Navigator.h"
    3231#include "Page.h"
    33 #include <JavaScriptCore/JSCInlines.h>
    3432
    3533using namespace JSC;
     
    3735namespace WebCore {
    3836
    39 NavigatorWebDriver::NavigatorWebDriver(Frame* frame)
    40     : m_frame(frame)
     37NavigatorWebDriver::NavigatorWebDriver()
    4138{
    4239}
     
    5148}
    5249
    53 bool NavigatorWebDriver::isControlledByAutomation() const
     50bool NavigatorWebDriver::isControlledByAutomation(const Navigator& navigator)
    5451{
    55     if (!m_frame || !m_frame->page())
     52    auto* frame = navigator.frame();
     53    if (!frame || !frame->page())
    5654        return false;
    5755
    58     return m_frame->page()->isControlledByAutomation();
     56    return frame->page()->isControlledByAutomation();
    5957}
    6058
     
    6361    NavigatorWebDriver* supplement = static_cast<NavigatorWebDriver*>(Supplement<Navigator>::from(navigator, supplementName()));
    6462    if (!supplement) {
    65         auto newSupplement = std::make_unique<NavigatorWebDriver>(navigator->frame());
     63        auto newSupplement = std::make_unique<NavigatorWebDriver>();
    6664        supplement = newSupplement.get();
    6765        provideTo(navigator, supplementName(), WTFMove(newSupplement));
     
    7068}
    7169
    72 JSValue JSNavigator::webdriver(ExecState&) const
     70bool NavigatorWebDriver::webdriver(const Navigator& navigator)
    7371{
    74     bool isControlledByAutomation = NavigatorWebDriver::from(&wrapped())->isControlledByAutomation();
    75     return isControlledByAutomation ? jsBoolean(true) : jsUndefined();
     72    return NavigatorWebDriver::isControlledByAutomation(navigator);
    7673}
    7774
  • trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.h

    r209198 r217391  
    3030namespace WebCore {
    3131
    32 class Frame;
    3332class Navigator;
    3433
    3534class NavigatorWebDriver final : public Supplement<Navigator> {
    3635public:
    37     explicit NavigatorWebDriver(Frame*);
     36    NavigatorWebDriver();
    3837    virtual ~NavigatorWebDriver();
    3938
    40     bool isControlledByAutomation() const;
    41 
    4239    static NavigatorWebDriver* from(Navigator*);
    43     static bool isControlledByAutomation(Navigator& navigator);
     40    static bool webdriver(const Navigator&);
    4441private:
    4542    static const char* supplementName();
    46 
    47     Frame* m_frame { nullptr };
     43    static bool isControlledByAutomation(const Navigator&);
    4844};
    4945
  • trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.idl

    r209198 r217391  
    2525
    2626partial interface Navigator {
    27     [NotEnumerable, Custom] readonly attribute boolean webdriver;
     27    readonly attribute boolean webdriver;
    2828};
Note: See TracChangeset for help on using the changeset viewer.