| Differences between
and this patch
- a/Source/WebCore/ChangeLog +42 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2017-10-06  Andy Estes  <aestes@apple.com>
2
3
        [Payment Request] Implement PaymentRequest.show() and PaymentRequest.hide()
4
        https://bugs.webkit.org/show_bug.cgi?id=178043
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Tests: http/tests/paymentrequest/payment-request-abort-method.https.html
9
               http/tests/paymentrequest/payment-request-show-method.https.html
10
11
        * Modules/applepay/PaymentSession.h: Virtually inherited from PaymentSessionBase to
12
        accommodate ApplePayPaymentHandler inheriting from both this and PaymentHandler.
13
        (WebCore::PaymentSession::~PaymentSession): Deleted.
14
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
15
        (WebCore::paymentCoordinator): Virtually inherited from PaymentSessionBase to accommodate
16
        ApplePayPaymentHandler inheriting from both this and PaymentSession.
17
        (WebCore::ApplePayPaymentHandler::hasActiveSession): Added. Calls PaymentCoordinator::hasActiveSession().
18
        (WebCore::ApplePayPaymentHandler::show): Added. Calls PaymentCoordinator::beginPaymentSession().
19
        (WebCore::ApplePayPaymentHandler::hide): Added. Calls PaymentCoordinator::abortPaymentSession().
20
        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: Inherited from PaymentSession in
21
        addition to PaymentHandler so that this can be PaymentCoordinator active session.
22
        * Modules/paymentrequest/PaymentHandler.cpp:
23
        (WebCore::PaymentHandler::create):
24
        (WebCore::PaymentHandler::hasActiveSession):
25
        * Modules/paymentrequest/PaymentHandler.h:
26
        * Modules/paymentrequest/PaymentRequest.cpp:
27
        (WebCore::PaymentRequest::~PaymentRequest):
28
        (WebCore::PaymentRequest::show): Rejected the promise if PaymentCoordinator has an active session.
29
        (WebCore::PaymentRequest::abort): Called stop().
30
        (WebCore::PaymentRequest::canSuspendForDocumentSuspension const): Returned true if state is
31
        Interactive and there is an active handler showing.
32
        (WebCore::PaymentRequest::stop): Hid the active session if it's showing, then set state to
33
        Closed and rejected the show promise.
34
        * Modules/paymentrequest/PaymentRequest.h:
35
        * Modules/paymentrequest/PaymentSessionBase.h: Added. Inherits from
36
        RefCounted<PaymentSessionBase> and defines a virtual destructor. This allows subclasses to
37
        virtually inherit a single ref-count to support multiple inheritance.
38
        * WebCore.xcodeproj/project.pbxproj:
39
        * bindings/scripts/CodeGeneratorJS.pm:
40
        (GetGnuVTableOffsetForType): Added ApplePaySession to the list of classes that need a vtable
41
        offset of 3.
42
1
2017-10-05  Zalan Bujtas  <zalan@apple.com>
43
2017-10-05  Zalan Bujtas  <zalan@apple.com>
2
44
3
        RenderMathMLFenced should not hold a raw pointer to RenderMathMLFencedOperator
45
        RenderMathMLFenced should not hold a raw pointer to RenderMathMLFencedOperator
- a/Source/WebCore/Modules/applepay/PaymentSession.h -4 / +2 lines
Lines 28-34 a/Source/WebCore/Modules/applepay/PaymentSession.h_sec1
28
#if ENABLE(APPLE_PAY)
28
#if ENABLE(APPLE_PAY)
29
29
30
#include "ApplePaySessionPaymentRequest.h"
30
#include "ApplePaySessionPaymentRequest.h"
31
#include <wtf/RefCounted.h>
31
#include "PaymentSessionBase.h"
32
32
33
namespace WebCore {
33
namespace WebCore {
34
34
Lines 37-46 class PaymentContact; a/Source/WebCore/Modules/applepay/PaymentSession.h_sec2
37
class PaymentMethod;
37
class PaymentMethod;
38
class URL;
38
class URL;
39
39
40
class PaymentSession : public RefCounted<PaymentSession> {
40
class PaymentSession : public virtual PaymentSessionBase {
41
public:
41
public:
42
    virtual ~PaymentSession() { }
43
44
    virtual void validateMerchant(const URL&) = 0;
42
    virtual void validateMerchant(const URL&) = 0;
45
    virtual void didAuthorizePayment(const Payment&) = 0;
43
    virtual void didAuthorizePayment(const Payment&) = 0;
46
    virtual void didSelectShippingMethod(const ApplePaySessionPaymentRequest::ShippingMethod&) = 0;
44
    virtual void didSelectShippingMethod(const ApplePaySessionPaymentRequest::ShippingMethod&) = 0;
- a/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp -2 / +22 lines
Lines 34-39 a/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp_sec1
34
#include "Document.h"
34
#include "Document.h"
35
#include "Frame.h"
35
#include "Frame.h"
36
#include "JSApplePayRequest.h"
36
#include "JSApplePayRequest.h"
37
#include "LinkIconCollector.h"
37
#include "MainFrame.h"
38
#include "MainFrame.h"
38
#include "PaymentContact.h"
39
#include "PaymentContact.h"
39
#include "PaymentCoordinator.h"
40
#include "PaymentCoordinator.h"
Lines 50-55 bool ApplePayPaymentHandler::handlesIdentifier(const PaymentRequest::MethodIdent a/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp_sec2
50
    return url.host() == "apple.com" && url.path() == "/apple-pay";
51
    return url.host() == "apple.com" && url.path() == "/apple-pay";
51
}
52
}
52
53
54
static inline PaymentCoordinator& paymentCoordinator(Document& document)
55
{
56
    return document.frame()->mainFrame().paymentCoordinator();
57
}
58
59
bool ApplePayPaymentHandler::hasActiveSession(Document& document)
60
{
61
    return paymentCoordinator(document).hasActiveSession();
62
}
63
53
ApplePayPaymentHandler::ApplePayPaymentHandler(PaymentRequest& paymentRequest)
64
ApplePayPaymentHandler::ApplePayPaymentHandler(PaymentRequest& paymentRequest)
54
    : m_paymentRequest { paymentRequest }
65
    : m_paymentRequest { paymentRequest }
55
{
66
{
Lines 147-155 ExceptionOr<void> ApplePayPaymentHandler::convertData(JSC::ExecState& execState, a/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp_sec3
147
    return { };
158
    return { };
148
}
159
}
149
160
150
void ApplePayPaymentHandler::show()
161
void ApplePayPaymentHandler::show(Document& document)
162
{
163
    Vector<URL> linkIconURLs;
164
    for (auto& icon : LinkIconCollector { document }.iconsOfTypes({ LinkIconType::TouchIcon, LinkIconType::TouchPrecomposedIcon }))
165
        linkIconURLs.append(icon.url);
166
167
    paymentCoordinator(document).beginPaymentSession(*this, document.url(), linkIconURLs, *m_applePayRequest);
168
}
169
170
void ApplePayPaymentHandler::hide(Document& document)
151
{
171
{
152
    // FIXME: Call PaymentCoordinator::beginPaymentSession() with m_applePayRequest
172
    paymentCoordinator(document).abortPaymentSession();
153
}
173
}
154
174
155
} // namespace WebCore
175
} // namespace WebCore
- a/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.h -5 / +15 lines
Lines 29-53 a/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.h_sec1
29
29
30
#include "ApplePaySessionPaymentRequest.h"
30
#include "ApplePaySessionPaymentRequest.h"
31
#include "PaymentHandler.h"
31
#include "PaymentHandler.h"
32
#include "PaymentSession.h"
32
#include <wtf/Noncopyable.h>
33
#include <wtf/Noncopyable.h>
33
#include <wtf/Ref.h>
34
#include <wtf/Ref.h>
34
35
35
namespace WebCore {
36
namespace WebCore {
36
37
37
class Document;
38
class PaymentRequest;
38
class PaymentRequest;
39
39
40
class ApplePayPaymentHandler final : public PaymentHandler {
40
class ApplePayPaymentHandler final : public PaymentHandler, public PaymentSession {
41
    WTF_MAKE_NONCOPYABLE(ApplePayPaymentHandler);
42
public:
41
public:
43
    static bool handlesIdentifier(const PaymentRequest::MethodIdentifier&);
42
    static bool handlesIdentifier(const PaymentRequest::MethodIdentifier&);
43
    static bool hasActiveSession(Document&);
44
44
45
private:
45
private:
46
    friend std::unique_ptr<ApplePayPaymentHandler> std::make_unique<ApplePayPaymentHandler>(PaymentRequest&);
46
    friend class PaymentHandler;
47
    explicit ApplePayPaymentHandler(PaymentRequest&);
47
    explicit ApplePayPaymentHandler(PaymentRequest&);
48
48
49
    // PaymentHandler
49
    ExceptionOr<void> convertData(JSC::ExecState&, JSC::JSValue&&) final;
50
    ExceptionOr<void> convertData(JSC::ExecState&, JSC::JSValue&&) final;
50
    void show() final;
51
    void show(Document&) final;
52
    void hide(Document&) final;
53
54
    // PaymentSession
55
    void validateMerchant(const URL&) final { }
56
    void didAuthorizePayment(const Payment&) final { }
57
    void didSelectShippingMethod(const ApplePaySessionPaymentRequest::ShippingMethod&) final { }
58
    void didSelectShippingContact(const PaymentContact&) final { }
59
    void didSelectPaymentMethod(const PaymentMethod&) final { }
60
    void didCancelPaymentSession() final { }
51
61
52
    Ref<PaymentRequest> m_paymentRequest;
62
    Ref<PaymentRequest> m_paymentRequest;
53
    std::optional<ApplePaySessionPaymentRequest> m_applePayRequest;
63
    std::optional<ApplePaySessionPaymentRequest> m_applePayRequest;
- a/Source/WebCore/Modules/paymentrequest/PaymentHandler.cpp -2 / +12 lines
Lines 34-44 a/Source/WebCore/Modules/paymentrequest/PaymentHandler.cpp_sec1
34
34
35
namespace WebCore {
35
namespace WebCore {
36
36
37
std::unique_ptr<PaymentHandler> PaymentHandler::create(PaymentRequest& paymentRequest, const PaymentRequest::MethodIdentifier& identifier)
37
RefPtr<PaymentHandler> PaymentHandler::create(PaymentRequest& paymentRequest, const PaymentRequest::MethodIdentifier& identifier)
38
{
38
{
39
#if ENABLE(APPLE_PAY)
39
#if ENABLE(APPLE_PAY)
40
    if (ApplePayPaymentHandler::handlesIdentifier(identifier))
40
    if (ApplePayPaymentHandler::handlesIdentifier(identifier))
41
        return std::make_unique<ApplePayPaymentHandler>(paymentRequest);
41
        return adoptRef(new ApplePayPaymentHandler(paymentRequest));
42
#else
42
#else
43
    UNUSED_PARAM(paymentRequest);
43
    UNUSED_PARAM(paymentRequest);
44
    UNUSED_PARAM(identifier);
44
    UNUSED_PARAM(identifier);
Lines 47-52 std::unique_ptr<PaymentHandler> PaymentHandler::create(PaymentRequest& paymentRe a/Source/WebCore/Modules/paymentrequest/PaymentHandler.cpp_sec2
47
    return nullptr;
47
    return nullptr;
48
}
48
}
49
49
50
bool PaymentHandler::hasActiveSession(Document& document)
51
{
52
#if ENABLE(APPLE_PAY)
53
    return ApplePayPaymentHandler::hasActiveSession(document);
54
#else
55
    UNUSED_PARAM(document);
56
    return false;
57
#endif
58
}
59
50
} // namespace WebCore
60
} // namespace WebCore
51
61
52
#endif // ENABLE(PAYMENT_REQUEST)
62
#endif // ENABLE(PAYMENT_REQUEST)
- a/Source/WebCore/Modules/paymentrequest/PaymentHandler.h -4 / +8 lines
Lines 28-33 a/Source/WebCore/Modules/paymentrequest/PaymentHandler.h_sec1
28
#if ENABLE(PAYMENT_REQUEST)
28
#if ENABLE(PAYMENT_REQUEST)
29
29
30
#include "PaymentRequest.h"
30
#include "PaymentRequest.h"
31
#include "PaymentSessionBase.h"
31
32
32
namespace JSC {
33
namespace JSC {
33
class ExecState;
34
class ExecState;
Lines 36-48 class JSValue; a/Source/WebCore/Modules/paymentrequest/PaymentHandler.h_sec2
36
37
37
namespace WebCore {
38
namespace WebCore {
38
39
39
class PaymentHandler {
40
class Document;
41
42
class PaymentHandler : public virtual PaymentSessionBase {
40
public:
43
public:
41
    static std::unique_ptr<PaymentHandler> create(PaymentRequest&, const PaymentRequest::MethodIdentifier&);
44
    static RefPtr<PaymentHandler> create(PaymentRequest&, const PaymentRequest::MethodIdentifier&);
42
    virtual ~PaymentHandler() = default;
45
    static bool hasActiveSession(Document&);
43
46
44
    virtual ExceptionOr<void> convertData(JSC::ExecState&, JSC::JSValue&&) = 0;
47
    virtual ExceptionOr<void> convertData(JSC::ExecState&, JSC::JSValue&&) = 0;
45
    virtual void show() = 0;
48
    virtual void show(Document&) = 0;
49
    virtual void hide(Document&) = 0;
46
};
50
};
47
51
48
} // namespace WebCore
52
} // namespace WebCore
- a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp -9 / +43 lines
Lines 336-341 PaymentRequest::PaymentRequest(Document& document, PaymentOptions&& options, Pay a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp_sec1
336
336
337
PaymentRequest::~PaymentRequest()
337
PaymentRequest::~PaymentRequest()
338
{
338
{
339
    ASSERT(!m_activePaymentHandler);
339
}
340
}
340
341
341
// https://www.w3.org/TR/payment-request/#show()-method
342
// https://www.w3.org/TR/payment-request/#show()-method
Lines 349-364 void PaymentRequest::show(ShowPromise&& promise) a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp_sec2
349
        return;
350
        return;
350
    }
351
    }
351
352
352
    // FIXME: Reject promise with AbortError if PaymentCoordinator already has an active session.
353
    auto& document = downcast<Document>(*scriptExecutionContext());
354
    if (PaymentHandler::hasActiveSession(document)) {
355
        promise.reject(Exception { AbortError });
356
        return;
357
    }
353
358
354
    m_state = State::Interactive;
359
    m_state = State::Interactive;
355
    ASSERT(!m_showPromise);
360
    ASSERT(!m_showPromise);
356
    m_showPromise = WTFMove(promise);
361
    m_showPromise = WTFMove(promise);
357
362
358
    std::unique_ptr<PaymentHandler> selectedPaymentHandler;
363
    RefPtr<PaymentHandler> selectedPaymentHandler;
359
    for (auto& paymentMethod : m_serializedMethodData) {
364
    for (auto& paymentMethod : m_serializedMethodData) {
360
        auto scope = DECLARE_THROW_SCOPE(scriptExecutionContext()->vm());
365
        auto scope = DECLARE_THROW_SCOPE(document.vm());
361
        JSC::JSValue data = JSONParse(scriptExecutionContext()->execState(), paymentMethod.serializedData);
366
        JSC::JSValue data = JSONParse(document.execState(), paymentMethod.serializedData);
362
        if (scope.exception()) {
367
        if (scope.exception()) {
363
            m_showPromise->reject(Exception { ExistingExceptionError });
368
            m_showPromise->reject(Exception { ExistingExceptionError });
364
            return;
369
            return;
Lines 368-374 void PaymentRequest::show(ShowPromise&& promise) a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp_sec3
368
        if (!handler)
373
        if (!handler)
369
            continue;
374
            continue;
370
375
371
        auto result = handler->convertData(*scriptExecutionContext()->execState(), WTFMove(data));
376
        auto result = handler->convertData(*document.execState(), WTFMove(data));
372
        if (result.hasException()) {
377
        if (result.hasException()) {
373
            m_showPromise->reject(result.releaseException());
378
            m_showPromise->reject(result.releaseException());
374
            return;
379
            return;
Lines 383-389 void PaymentRequest::show(ShowPromise&& promise) a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp_sec4
383
        return;
388
        return;
384
    }
389
    }
385
390
386
    selectedPaymentHandler->show();
391
    ASSERT(!m_activePaymentHandler);
392
    m_activePaymentHandler = WTFMove(selectedPaymentHandler);
393
394
    m_activePaymentHandler->show(document);
395
    setPendingActivity(this);
387
}
396
}
388
397
389
// https://www.w3.org/TR/payment-request/#abort()-method
398
// https://www.w3.org/TR/payment-request/#abort()-method
Lines 392-400 ExceptionOr<void> PaymentRequest::abort(AbortPromise&& promise) a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp_sec5
392
    if (m_state != State::Interactive)
401
    if (m_state != State::Interactive)
393
        return Exception { InvalidStateError };
402
        return Exception { InvalidStateError };
394
403
395
    m_state = State::Closed;
404
    stop();
396
    ASSERT(m_showPromise);
397
    m_showPromise->reject(Exception { AbortError });
398
    promise.resolve();
405
    promise.resolve();
399
    return { };
406
    return { };
400
}
407
}
Lines 423-428 std::optional<PaymentShippingType> PaymentRequest::shippingType() const a/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp_sec6
423
    return std::nullopt;
430
    return std::nullopt;
424
}
431
}
425
432
433
bool PaymentRequest::canSuspendForDocumentSuspension() const
434
{
435
    switch (m_state) {
436
    case State::Created:
437
    case State::Closed:
438
        ASSERT(!m_activePaymentHandler);
439
        return true;
440
    case State::Interactive:
441
        return !m_activePaymentHandler;
442
    }
443
}
444
445
void PaymentRequest::stop()
446
{
447
    if (m_state != State::Interactive)
448
        return;
449
450
    if (auto paymentHandler = std::exchange(m_activePaymentHandler, nullptr)) {
451
        unsetPendingActivity(this);
452
        paymentHandler->hide(downcast<Document>(*scriptExecutionContext()));
453
    }
454
455
    ASSERT(m_state == State::Interactive);
456
    m_state = State::Closed;
457
    m_showPromise->reject(Exception { AbortError });
458
}
459
426
} // namespace WebCore
460
} // namespace WebCore
427
461
428
#endif // ENABLE(PAYMENT_REQUEST)
462
#endif // ENABLE(PAYMENT_REQUEST)
- a/Source/WebCore/Modules/paymentrequest/PaymentRequest.h -3 / +4 lines
Lines 40-45 namespace WebCore { a/Source/WebCore/Modules/paymentrequest/PaymentRequest.h_sec1
40
40
41
class Document;
41
class Document;
42
class PaymentAddress;
42
class PaymentAddress;
43
class PaymentHandler;
43
class PaymentResponse;
44
class PaymentResponse;
44
enum class PaymentShippingType;
45
enum class PaymentShippingType;
45
struct PaymentMethodData;
46
struct PaymentMethodData;
Lines 85-92 private: a/Source/WebCore/Modules/paymentrequest/PaymentRequest.h_sec2
85
86
86
    // ActiveDOMObject
87
    // ActiveDOMObject
87
    const char* activeDOMObjectName() const final { return "PaymentRequest"; }
88
    const char* activeDOMObjectName() const final { return "PaymentRequest"; }
88
    bool canSuspendForDocumentSuspension() const final { return true; }
89
    bool canSuspendForDocumentSuspension() const final;
89
    void stop() final { }
90
    void stop() final;
90
91
91
    // EventTarget
92
    // EventTarget
92
    EventTargetInterface eventTargetInterface() const final { return PaymentRequestEventTargetInterfaceType; }
93
    EventTargetInterface eventTargetInterface() const final { return PaymentRequestEventTargetInterfaceType; }
Lines 102-109 private: a/Source/WebCore/Modules/paymentrequest/PaymentRequest.h_sec3
102
    RefPtr<PaymentAddress> m_shippingAddress;
103
    RefPtr<PaymentAddress> m_shippingAddress;
103
    State m_state { State::Created };
104
    State m_state { State::Created };
104
    std::optional<ShowPromise> m_showPromise;
105
    std::optional<ShowPromise> m_showPromise;
105
    std::optional<AbortPromise> m_abortPromise;
106
    std::optional<CanMakePaymentPromise> m_canMakePaymentPromise;
106
    std::optional<CanMakePaymentPromise> m_canMakePaymentPromise;
107
    RefPtr<PaymentHandler> m_activePaymentHandler;
107
};
108
};
108
109
109
std::optional<PaymentRequest::MethodIdentifier> convertAndValidatePaymentMethodIdentifier(const String& identifier);
110
std::optional<PaymentRequest::MethodIdentifier> convertAndValidatePaymentMethodIdentifier(const String& identifier);
- a/Source/WebCore/Modules/paymentrequest/PaymentSessionBase.h +40 lines
Line 0 a/Source/WebCore/Modules/paymentrequest/PaymentSessionBase.h_sec1
1
/*
2
 * Copyright (C) 2017 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23
 * THE POSSIBILITY OF SUCH DAMAGE.
24
 */
25
26
#pragma once
27
28
#if ENABLE(APPLE_PAY) || ENABLE(PAYMENT_REQUEST)
29
30
#include <wtf/RefCounted.h>
31
32
namespace WebCore {
33
34
struct PaymentSessionBase : RefCounted<PaymentSessionBase> {
35
    virtual ~PaymentSessionBase() = default;
36
};
37
38
} // namespace WebCore
39
40
#endif // ENABLE(APPLE_PAY) || ENABLE(PAYMENT_REQUEST)
- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +4 lines
Lines 4427-4432 a/Source/WebCore/WebCore.xcodeproj/project.pbxproj_sec1
4427
		A17C81220F2A5CF7005DAAEB /* HTMLElementFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */; };
4427
		A17C81220F2A5CF7005DAAEB /* HTMLElementFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */; };
4428
		A17C81230F2A5CF7005DAAEB /* HTMLElementFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */; };
4428
		A17C81230F2A5CF7005DAAEB /* HTMLElementFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */; };
4429
		A17D275E1EAC579800BF01E7 /* MediaSelectionOption.h in Headers */ = {isa = PBXBuildFile; fileRef = A17D275D1EAC579800BF01E7 /* MediaSelectionOption.h */; settings = {ATTRIBUTES = (Private, ); }; };
4429
		A17D275E1EAC579800BF01E7 /* MediaSelectionOption.h in Headers */ = {isa = PBXBuildFile; fileRef = A17D275D1EAC579800BF01E7 /* MediaSelectionOption.h */; settings = {ATTRIBUTES = (Private, ); }; };
4430
		A17FEE641F8893220021E811 /* PaymentSessionBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A17FEE631F8893220021E811 /* PaymentSessionBase.h */; };
4430
		A182D5B71BE722670087A7CC /* SettingsCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A182D5B61BE722620087A7CC /* SettingsCocoa.mm */; };
4431
		A182D5B71BE722670087A7CC /* SettingsCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A182D5B61BE722620087A7CC /* SettingsCocoa.mm */; };
4431
		A185B4291E8211A100DC9118 /* PreviewLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = A185B4271E8211A100DC9118 /* PreviewLoader.mm */; };
4432
		A185B4291E8211A100DC9118 /* PreviewLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = A185B4271E8211A100DC9118 /* PreviewLoader.mm */; };
4432
		A185B42A1E8211A100DC9118 /* PreviewLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A185B4281E8211A100DC9118 /* PreviewLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
4433
		A185B42A1E8211A100DC9118 /* PreviewLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A185B4281E8211A100DC9118 /* PreviewLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
Lines 12892-12897 a/Source/WebCore/WebCore.xcodeproj/project.pbxproj_sec2
12892
		A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLElementFactory.cpp; sourceTree = "<group>"; };
12893
		A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLElementFactory.cpp; sourceTree = "<group>"; };
12893
		A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLElementFactory.h; sourceTree = "<group>"; };
12894
		A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLElementFactory.h; sourceTree = "<group>"; };
12894
		A17D275D1EAC579800BF01E7 /* MediaSelectionOption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaSelectionOption.h; sourceTree = "<group>"; };
12895
		A17D275D1EAC579800BF01E7 /* MediaSelectionOption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaSelectionOption.h; sourceTree = "<group>"; };
12896
		A17FEE631F8893220021E811 /* PaymentSessionBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaymentSessionBase.h; sourceTree = "<group>"; };
12895
		A182D5B61BE722620087A7CC /* SettingsCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SettingsCocoa.mm; sourceTree = "<group>"; };
12897
		A182D5B61BE722620087A7CC /* SettingsCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SettingsCocoa.mm; sourceTree = "<group>"; };
12896
		A185B4271E8211A100DC9118 /* PreviewLoader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PreviewLoader.mm; sourceTree = "<group>"; };
12898
		A185B4271E8211A100DC9118 /* PreviewLoader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PreviewLoader.mm; sourceTree = "<group>"; };
12897
		A185B4281E8211A100DC9118 /* PreviewLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreviewLoader.h; sourceTree = "<group>"; };
12899
		A185B4281E8211A100DC9118 /* PreviewLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreviewLoader.h; sourceTree = "<group>"; };
Lines 21711-21716 a/Source/WebCore/WebCore.xcodeproj/project.pbxproj_sec3
21711
				A1F76B3B1F44CF240014C318 /* PaymentResponse.cpp */,
21713
				A1F76B3B1F44CF240014C318 /* PaymentResponse.cpp */,
21712
				A1F76B3A1F44CF240014C318 /* PaymentResponse.h */,
21714
				A1F76B3A1F44CF240014C318 /* PaymentResponse.h */,
21713
				A1F76B3C1F44CF240014C318 /* PaymentResponse.idl */,
21715
				A1F76B3C1F44CF240014C318 /* PaymentResponse.idl */,
21716
				A17FEE631F8893220021E811 /* PaymentSessionBase.h */,
21714
				A1F76B521F44D2C70014C318 /* PaymentShippingOption.h */,
21717
				A1F76B521F44D2C70014C318 /* PaymentShippingOption.h */,
21715
				A1F76B541F44D2C70014C318 /* PaymentShippingOption.idl */,
21718
				A1F76B541F44D2C70014C318 /* PaymentShippingOption.idl */,
21716
				A1F76B461F44D07A0014C318 /* PaymentShippingType.h */,
21719
				A1F76B461F44D07A0014C318 /* PaymentShippingType.h */,
Lines 29566-29571 a/Source/WebCore/WebCore.xcodeproj/project.pbxproj_sec4
29566
				1A8A64681D19FDFF00D0E00F /* PaymentRequestValidator.h in Headers */,
29569
				1A8A64681D19FDFF00D0E00F /* PaymentRequestValidator.h in Headers */,
29567
				A1F76B3D1F44CF240014C318 /* PaymentResponse.h in Headers */,
29570
				A1F76B3D1F44CF240014C318 /* PaymentResponse.h in Headers */,
29568
				A1491DA31F859D870095F5D4 /* PaymentSession.h in Headers */,
29571
				A1491DA31F859D870095F5D4 /* PaymentSession.h in Headers */,
29572
				A17FEE641F8893220021E811 /* PaymentSessionBase.h in Headers */,
29569
				A1F76B551F44D2C70014C318 /* PaymentShippingOption.h in Headers */,
29573
				A1F76B551F44D2C70014C318 /* PaymentShippingOption.h in Headers */,
29570
				A1F76B491F44D07A0014C318 /* PaymentShippingType.h in Headers */,
29574
				A1F76B491F44D07A0014C318 /* PaymentShippingType.h in Headers */,
29571
				B27535650B053814002CE64F /* PDFDocumentImage.h in Headers */,
29575
				B27535650B053814002CE64F /* PDFDocumentImage.h in Headers */,
- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm -1 / +2 lines
Lines 3522-3528 sub GetGnuMangledNameForInterface a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm_sec1
3522
sub GetGnuVTableOffsetForType
3522
sub GetGnuVTableOffsetForType
3523
{
3523
{
3524
    my $typename = shift;
3524
    my $typename = shift;
3525
    if ($typename eq "SVGAElement"
3525
    if ($typename eq "ApplePaySession"
3526
        || $typename eq "SVGAElement"
3526
        || $typename eq "SVGCircleElement"
3527
        || $typename eq "SVGCircleElement"
3527
        || $typename eq "SVGClipPathElement"
3528
        || $typename eq "SVGClipPathElement"
3528
        || $typename eq "SVGDefsElement"
3529
        || $typename eq "SVGDefsElement"
- a/LayoutTests/ChangeLog +18 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2017-10-06  Andy Estes  <aestes@apple.com>
2
3
        [Payment Request] Implement PaymentRequest.show() and PaymentRequest.hide()
4
        https://bugs.webkit.org/show_bug.cgi?id=178043
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Copied payment-request-abort-method.https.html and payment-request-show-method.https.html
9
        from web-platform-tests/payment-request/ and changed the payment method from basic-card to
10
        Apple Pay. This needs to eventually be upstreamed back to WPT.
11
12
        * http/tests/paymentrequest/payment-request-abort-method.https-expected.txt: Added.
13
        * http/tests/paymentrequest/payment-request-abort-method.https.html: Added.
14
        * http/tests/paymentrequest/payment-request-show-method.https-expected.txt: Added.
15
        * http/tests/paymentrequest/payment-request-show-method.https.html: Added.
16
        * platform/ios-wk2/TestExpectations:
17
        * platform/mac-wk2/TestExpectations:
18
1
2017-10-05  Andy Estes  <aestes@apple.com>
19
2017-10-05  Andy Estes  <aestes@apple.com>
2
20
3
        [Payment Request] Add a payment method that supports Apple Pay
21
        [Payment Request] Add a payment method that supports Apple Pay
- a/LayoutTests/imported/w3c/ChangeLog +10 lines
Lines 1-3 a/LayoutTests/imported/w3c/ChangeLog_sec1
1
2017-10-06  Andy Estes  <aestes@apple.com>
2
3
        [Payment Request] Implement PaymentRequest.show() and PaymentRequest.hide()
4
        https://bugs.webkit.org/show_bug.cgi?id=178043
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        * web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt: Removed.
9
        * web-platform-tests/payment-request/payment-request-show-method.https-expected.txt: Removed.
10
1
2017-10-05  Andy Estes  <aestes@apple.com>
11
2017-10-05  Andy Estes  <aestes@apple.com>
2
12
3
        [Payment Request] Add a payment method that supports Apple Pay
13
        [Payment Request] Add a payment method that supports Apple Pay
- a/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https-expected.txt +5 lines
Line 0 a/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https-expected.txt_sec1
1
2
PASS Throws if the promise [[state]] is not "interactive" 
3
PASS Calling abort must not change the [[state]] until after "interactive" 
4
PASS calling .abort() causes acceptPromise to reject and closes the request. 
5
- a/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https.html +76 lines
Line 0 a/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https.html_sec1
1
<!DOCTYPE html>
2
<!--  Copyright © 2017 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang).  -->
3
<!--  Copyright (C) 2017 Apple Inc. All rights reserved.  -->
4
<!-- FIXME: Upstream this test to web-platform-tests/payment-request/. -->
5
<meta charset="utf-8">
6
<title>Test for PaymentRequest.abort() method</title>
7
<link rel="help" href="https://w3c.github.io/browser-payment-api/#abort-method">
8
<script src="/resources/testharness.js"></script>
9
<script src="/resources/testharnessreport.js"></script>
10
<script>
11
"use strict";
12
setup(() => {}, {
13
  // Ignore unhandled rejections resulting from .show()'s acceptPromise
14
  // not being explicitly handled.
15
  allow_uncaught_exception: true,
16
});
17
const applePay = Object.freeze({
18
    supportedMethods: "https://apple.com/apple-pay",
19
    data: {
20
        version: 2,
21
        merchantCapabilities: ['supports3DS'],
22
        supportedNetworks: ['visa', 'masterCard'],
23
        countryCode: 'US',
24
        currencyCode: 'USD',
25
    },
26
});
27
const defaultMethods = Object.freeze([applePay]);
28
const defaultDetails = Object.freeze({
29
  total: {
30
    label: "Total",
31
    amount: {
32
      currency: "USD",
33
      value: "1.00",
34
    },
35
  },
36
});
37
38
promise_test(async t => {
39
  // request is in "created" state
40
  const request = new PaymentRequest(defaultMethods, defaultDetails);
41
  await promise_rejects(t, "InvalidStateError", request.abort());
42
}, `Throws if the promise [[state]] is not "interactive"`);
43
44
promise_test(async t => {
45
  // request is in "created" state.
46
  const request = new PaymentRequest(defaultMethods, defaultDetails);
47
  await promise_rejects(t, "InvalidStateError", request.abort());
48
  // Call it again, for good measure.
49
  await promise_rejects(t, "InvalidStateError", request.abort());
50
  // The request's state is "created", so let's show it
51
  // which changes the state to "interactive.".
52
  request.show();
53
  // Let's set request the state to "closed" by calling .abort()
54
  try {
55
    await request.abort();
56
  } catch (err) {
57
    assert_true(false, "Unexpected promise rejection: " + err.message);
58
  }
59
  // The request is now "closed", so...
60
  await promise_rejects(t, "InvalidStateError", request.abort());
61
}, `Calling abort must not change the [[state]] until after "interactive"`);
62
63
promise_test(async t => {
64
  const request = new PaymentRequest(defaultMethods, defaultDetails);
65
  const acceptPromise = request.show();
66
  try {
67
    await request.abort();
68
  } catch (err) {
69
    assert_true(false, "Unexpected promise rejection: " + err.message);
70
  }
71
  await promise_rejects(t, "AbortError", acceptPromise);
72
  // As request is now "closed", trying to show it will fail
73
  await promise_rejects(t, "InvalidStateError", request.show());
74
}, "calling .abort() causes acceptPromise to reject and closes the request.");
75
76
</script>
- a/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https-expected.txt +6 lines
Line 0 a/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https-expected.txt_sec1
1
2
PASS Must be possible to construct a payment request 
3
PASS Throws if the promise [[state]] is not "created" 
4
PASS If the user agent's "payment request is showing" boolean is true, then return a promise rejected with an "AbortError" DOMException. 
5
PASS If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException. 
6
- a/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https.html +68 lines
Line 0 a/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https.html_sec1
1
<!DOCTYPE html>
2
<!--  Copyright © 2017 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang).  -->
3
<!--  Copyright (C) 2017 Apple Inc. All rights reserved.  -->
4
<!-- FIXME: Upstream this test to web-platform-tests/payment-request/. -->
5
<meta charset="utf-8">
6
<title>Test for PaymentRequest.show() method</title>
7
<link rel="help" href="https://w3c.github.io/browser-payment-api/#show-method">
8
<script src="/resources/testharness.js"></script>
9
<script src="/resources/testharnessreport.js"></script>
10
<script>
11
'use strict';
12
const applePay = Object.freeze({
13
    supportedMethods: "https://apple.com/apple-pay",
14
    data: {
15
        version: 2,
16
        merchantCapabilities: ['supports3DS'],
17
        supportedNetworks: ['visa', 'masterCard'],
18
        countryCode: 'US',
19
        currencyCode: 'USD',
20
    },
21
});
22
const defaultMethods = Object.freeze([applePay]);
23
const defaultDetails = Object.freeze({
24
  total: {
25
    label: "Total",
26
    amount: {
27
      currency: "USD",
28
      value: "1.00",
29
    },
30
  },
31
});
32
33
test(() => {
34
  try {
35
    new PaymentRequest(defaultMethods, defaultDetails);
36
  } catch (err) {
37
    done();
38
    throw err;
39
  }
40
}, "Must be possible to construct a payment request");
41
42
43
promise_test(async t => {
44
  const request = new PaymentRequest(defaultMethods, defaultDetails);
45
  const acceptPromise = request.show(); // Sets state to "interactive"
46
  await promise_rejects(t, "InvalidStateError", request.show());
47
  await request.abort();
48
  await promise_rejects(t, "AbortError", acceptPromise);
49
}, `Throws if the promise [[state]] is not "created"`);
50
51
promise_test(async t => {
52
  const request1 = new PaymentRequest(defaultMethods, defaultDetails);
53
  const request2 = new PaymentRequest(defaultMethods, defaultDetails);
54
  const acceptPromise1 = request1.show();
55
  const acceptPromise2 = request2.show();
56
  await promise_rejects(t, "AbortError", acceptPromise2);
57
  await request1.abort();
58
  await promise_rejects(t, "AbortError", acceptPromise1);
59
}, `If the user agent's "payment request is showing" boolean is true, then return a promise rejected with an "AbortError" DOMException.`);
60
61
promise_test(async t => {
62
  const request = new PaymentRequest(
63
    [{ supportedMethods: "this-is-not-supported" }],
64
    defaultDetails);
65
  const acceptPromise = request.show();
66
  await promise_rejects(t, "NotSupportedError", acceptPromise);
67
}, `If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException.`);
68
</script>
- a/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt -5 lines
Lines 1-5 a/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt_sec1
1
2
PASS Throws if the promise [[state]] is not "interactive" 
3
PASS Calling abort must not change the [[state]] until after "interactive" 
4
FAIL calling .abort() causes acceptPromise to reject and closes the request. assert_throws: function "function () { throw e }" threw object "NotSupportedError: The operation is not supported." that is not a DOMException AbortError: property "code" is equal to 9, expected 20
5
- a/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-show-method.https-expected.txt -6 lines
Lines 1-6 a/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-show-method.https-expected.txt_sec1
1
2
PASS Must be possible to construct a payment request 
3
FAIL Throws if the promise [[state]] is not "created" assert_throws: function "function () { throw e }" threw object "NotSupportedError: The operation is not supported." that is not a DOMException AbortError: property "code" is equal to 9, expected 20
4
FAIL If the user agent's "payment request is showing" boolean is true, then return a promise rejected with an "AbortError" DOMException. assert_throws: function "function () { throw e }" threw object "NotSupportedError: The operation is not supported." that is not a DOMException AbortError: property "code" is equal to 9, expected 20
5
PASS If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException. 
6
- a/LayoutTests/platform/ios-wk2/TestExpectations -3 / +6 lines
Lines 28-41 fast/viewport/ios/viewport-fit-contain.html [ Skip ] a/LayoutTests/platform/ios-wk2/TestExpectations_sec1
28
fast/viewport/ios/viewport-fit-cover.html [ Skip ]
28
fast/viewport/ios/viewport-fit-cover.html [ Skip ]
29
fast/viewport/ios/viewport-fit-auto.html [ Skip ]
29
fast/viewport/ios/viewport-fit-auto.html [ Skip ]
30
30
31
imported/w3c/web-platform-tests/payment-request [ Pass ]
31
[ Sierra+ ] http/tests/paymentrequest [ Pass ]
32
[ Sierra+ ] imported/w3c/web-platform-tests/payment-request [ Pass ]
32
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/allowpaymentrequest-attribute-cross-origin-bc-containers.https.html [ Skip ]
33
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/allowpaymentrequest-attribute-cross-origin-bc-containers.https.html [ Skip ]
33
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/no-attribute-cross-origin-bc-containers.https.html [ Skip ]
34
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/no-attribute-cross-origin-bc-containers.https.html [ Skip ]
34
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html [ Skip ]
35
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html [ Skip ]
35
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Skip ]
36
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Skip ]
36
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html [ Skip ]
37
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html [ Skip ]
37
webkit.org/b/177391 imported/w3c/web-platform-tests/payment-request/payment-request-show-method.https.html [ Pass Failure ]
38
38
webkit.org/b/177391 imported/w3c/web-platform-tests/payment-request/payment-request-abort-method.https.html [ Pass Failure ]
39
# skip in favor of tests in http/tests/paymentrequest
40
imported/w3c/web-platform-tests/payment-request/payment-request-show-method.https.html [ Skip ]
41
imported/w3c/web-platform-tests/payment-request/payment-request-abort-method.https.html [ Skip ]
39
42
40
 # skip manual payment-request tests
43
 # skip manual payment-request tests
41
imported/w3c/web-platform-tests/payment-request/algorithms-manual.https.html [ Skip ]
44
imported/w3c/web-platform-tests/payment-request/algorithms-manual.https.html [ Skip ]
- a/LayoutTests/platform/mac-wk2/TestExpectations -3 / +6 lines
Lines 25-39 fast/media/mq-prefers-reduced-motion-live-update.html [ Pass ] a/LayoutTests/platform/mac-wk2/TestExpectations_sec1
25
fast/visual-viewport/rubberbanding-viewport-rects.html [ Pass ]
25
fast/visual-viewport/rubberbanding-viewport-rects.html [ Pass ]
26
fast/visual-viewport/rubberbanding-viewport-rects-header-footer.html  [ Pass ]
26
fast/visual-viewport/rubberbanding-viewport-rects-header-footer.html  [ Pass ]
27
27
28
imported/w3c/web-platform-tests/payment-request [ Pass ]
28
[ Sierra+ ] http/tests/paymentrequest [ Pass ]
29
[ Sierra+ ] imported/w3c/web-platform-tests/payment-request [ Pass ]
29
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/allowpaymentrequest-attribute-cross-origin-bc-containers.https.html [ Skip ]
30
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/allowpaymentrequest-attribute-cross-origin-bc-containers.https.html [ Skip ]
30
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/no-attribute-cross-origin-bc-containers.https.html [ Skip ]
31
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/no-attribute-cross-origin-bc-containers.https.html [ Skip ]
31
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html [ Skip ]
32
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html [ Skip ]
32
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Skip ]
33
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Skip ]
33
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html [ Skip ]
34
webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html [ Skip ]
34
webkit.org/b/177783 imported/w3c/web-platform-tests/payment-request/rejects_if_not_active.https.html [ Skip ]
35
webkit.org/b/177783 imported/w3c/web-platform-tests/payment-request/rejects_if_not_active.https.html [ Skip ]
35
webkit.org/b/177391 imported/w3c/web-platform-tests/payment-request/payment-request-show-method.https.html [ Pass Failure ]
36
36
webkit.org/b/177391 imported/w3c/web-platform-tests/payment-request/payment-request-abort-method.https.html [ Pass Failure ]
37
# skip in favor of tests in http/tests/paymentrequest
38
imported/w3c/web-platform-tests/payment-request/payment-request-show-method.https.html [ Skip ]
39
imported/w3c/web-platform-tests/payment-request/payment-request-abort-method.https.html [ Skip ]
37
40
38
# skip manual payment-request tests
41
# skip manual payment-request tests
39
imported/w3c/web-platform-tests/payment-request/algorithms-manual.https.html [ Skip ]
42
imported/w3c/web-platform-tests/payment-request/algorithms-manual.https.html [ Skip ]

Return to Bug 178043