Changeset 234513 in webkit


Ignore:
Timestamp:
Aug 2, 2018 1:13:05 PM (6 years ago)
Author:
achristensen@apple.com
Message:

Check with SafeBrowsing during navigation in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=188133

Reviewed by Chris Dumez.

This turns WebFramePolicyListenerProxy into an object that now listens for the results
of two processes happening in parallel: the API::NavigationClient's decidePolicyForNavigation{Action, Response}
(which it was already waiting for) and, on platforms that support it, the SafariSafeBrowsing framework's check.
The first result is stored as it waits for the second result unless the first result is the API::NavigationClient
saying to cancel or convert the navigation to a download, in which cases we don't care what the safe browsing
framework results are because we won't show the URL in the browser.

Nothing is done with the safe browsing results yet.

  • UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Added.

(WebKit::SafeBrowsingResult::SafeBrowsingResult):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::beginSafeBrowsingCheck):

  • UIProcess/SafeBrowsingResult.h: Added.

(WebKit::SafeBrowsingResult::provider const):
(WebKit::SafeBrowsingResult::isPhishing const):
(WebKit::SafeBrowsingResult::isMalware const):
(WebKit::SafeBrowsingResult::isUnwantedSoftware const):
(WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):

  • UIProcess/WebFramePolicyListenerProxy.cpp:

(WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
(WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):

  • UIProcess/WebFramePolicyListenerProxy.h:

(WebKit::WebFramePolicyListenerProxy::create):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::setUpPolicyListenerProxy):

  • UIProcess/WebFrameProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r234504 r234513  
     12018-08-02  Alex Christensen  <achristensen@webkit.org>
     2
     3        Check with SafeBrowsing during navigation in WKWebView
     4        https://bugs.webkit.org/show_bug.cgi?id=188133
     5
     6        Reviewed by Chris Dumez.
     7
     8        This turns WebFramePolicyListenerProxy into an object that now listens for the results
     9        of two processes happening in parallel: the API::NavigationClient's decidePolicyForNavigation{Action, Response}
     10        (which it was already waiting for) and, on platforms that support it, the SafariSafeBrowsing framework's check.
     11        The first result is stored as it waits for the second result unless the first result is the API::NavigationClient
     12        saying to cancel or convert the navigation to a download, in which cases we don't care what the safe browsing
     13        framework results are because we won't show the URL in the browser.
     14
     15        Nothing is done with the safe browsing results yet.
     16
     17        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Added.
     18        (WebKit::SafeBrowsingResult::SafeBrowsingResult):
     19        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     20        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
     21        * UIProcess/SafeBrowsingResult.h: Added.
     22        (WebKit::SafeBrowsingResult::provider const):
     23        (WebKit::SafeBrowsingResult::isPhishing const):
     24        (WebKit::SafeBrowsingResult::isMalware const):
     25        (WebKit::SafeBrowsingResult::isUnwantedSoftware const):
     26        (WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):
     27        * UIProcess/WebFramePolicyListenerProxy.cpp:
     28        (WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
     29        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
     30        (WebKit::WebFramePolicyListenerProxy::use):
     31        (WebKit::WebFramePolicyListenerProxy::download):
     32        (WebKit::WebFramePolicyListenerProxy::ignore):
     33        * UIProcess/WebFramePolicyListenerProxy.h:
     34        (WebKit::WebFramePolicyListenerProxy::create):
     35        * UIProcess/WebFrameProxy.cpp:
     36        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
     37        * UIProcess/WebFrameProxy.h:
     38        * UIProcess/WebPageProxy.cpp:
     39        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
     40        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
     41        (WebKit::WebPageProxy::decidePolicyForResponse):
     42        * UIProcess/WebPageProxy.h:
     43        * WebKit.xcodeproj/project.pbxproj:
     44
    1452018-08-02  Wenson Hsieh  <wenson_hsieh@apple.com>
    246
  • trunk/Source/WebKit/Platform/spi/Cocoa/SafeBrowsingSPI.h

    r227752 r234513  
    2626#pragma once
    2727
    28 #if WK_API_ENABLED && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000))
     28#if HAVE(SAFE_BROWSING)
    2929
    3030#import <Foundation/Foundation.h>
     
    7474
    7575#endif
    76 
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r226899 r234513  
    3131#import "LoadParameters.h"
    3232#import "PageClient.h"
     33#import "SafeBrowsingResult.h"
     34#import "SafeBrowsingSPI.h"
    3335#import "WebProcessProxy.h"
    3436#import <WebCore/DragItem.h>
     
    3638#import <WebCore/SearchPopupMenuCocoa.h>
    3739#import <WebCore/ValidationBubble.h>
     40#import <wtf/BlockPtr.h>
    3841#import <wtf/cf/TypeCastsCF.h>
    3942
     
    6770
    6871    searchItems = WebCore::loadRecentSearches(name);
     72}
     73
     74void WebPageProxy::beginSafeBrowsingCheck(const URL& url, WebFramePolicyListenerProxy& listener)
     75{
     76#if HAVE(SAFE_BROWSING)
     77    [[SSBLookupContext sharedLookupContext] lookUpURL:url completionHandler:BlockPtr<void(SSBLookupResult *, NSError *)>::fromCallable([listener = makeRef(listener)] (SSBLookupResult *result, NSError *error) mutable {
     78        RunLoop::main().dispatch([listener = WTFMove(listener), result = retainPtr(result), error = retainPtr(error)] {
     79            if (error) {
     80                listener->didReceiveSafeBrowsingResults({ });
     81                return;
     82            }
     83
     84            NSArray<SSBServiceLookupResult *> *results = [result serviceLookupResults];
     85            Vector<SafeBrowsingResult> resultsVector;
     86            resultsVector.reserveInitialCapacity([results count]);
     87            for (SSBServiceLookupResult *result in results)
     88                resultsVector.uncheckedAppend({ result });
     89            listener->didReceiveSafeBrowsingResults(WTFMove(resultsVector));
     90        });
     91    }).get()];
     92#else
     93    listener.didReceiveSafeBrowsingResults({ });
     94#endif
    6995}
    7096
  • trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp

    r234462 r234513  
    11/*
    2  * Copyright (C) 2010 Apple Inc. All rights reserved.
     2 * Copyright (C) 2010-2018 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3030#include "APIWebsiteDataStore.h"
    3131#include "APIWebsitePolicies.h"
     32#include "SafeBrowsingResult.h"
    3233#include "WebFrameProxy.h"
    3334#include "WebsiteDataStore.h"
     
    3637namespace WebKit {
    3738
    38 WebFramePolicyListenerProxy::WebFramePolicyListenerProxy(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible)>&& completionHandler)
    39     : m_completionHandler(WTFMove(completionHandler))
     39WebFramePolicyListenerProxy::WebFramePolicyListenerProxy(Reply&& reply, ShouldExpectSafeBrowsingResult expect)
     40    : m_reply(WTFMove(reply))
    4041{
     42    if (expect == ShouldExpectSafeBrowsingResult::No)
     43        didReceiveSafeBrowsingResults({ });
     44}
     45
     46WebFramePolicyListenerProxy::~WebFramePolicyListenerProxy() = default;
     47
     48void WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults(Vector<SafeBrowsingResult>&& safeBrowsingResults)
     49{
     50    ASSERT(!m_safeBrowsingResults);
     51    if (m_policyResult) {
     52        if (m_reply)
     53            m_reply(WebCore::PolicyAction::Use, m_policyResult->first.get(), m_policyResult->second, WTFMove(safeBrowsingResults));
     54    } else
     55        m_safeBrowsingResults = WTFMove(safeBrowsingResults);
    4156}
    4257
    4358void WebFramePolicyListenerProxy::use(API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap)
    4459{
    45     if (m_completionHandler)
    46         m_completionHandler(WebCore::PolicyAction::Use, policies, swap);
     60    ASSERT(!m_policyResult);
     61    if (m_safeBrowsingResults) {
     62        if (m_reply)
     63            m_reply(WebCore::PolicyAction::Use, policies, swap, WTFMove(*m_safeBrowsingResults));
     64    } else
     65        m_policyResult = {{ policies, swap }};
    4766}
    4867
    4968void WebFramePolicyListenerProxy::download()
    5069{
    51     if (m_completionHandler)
    52         m_completionHandler(WebCore::PolicyAction::Download, nullptr, ShouldProcessSwapIfPossible::No);
     70    ASSERT(!m_policyResult);
     71    if (m_reply)
     72        m_reply(WebCore::PolicyAction::Download, nullptr, ShouldProcessSwapIfPossible::No, { });
    5373}
    5474
    5575void WebFramePolicyListenerProxy::ignore()
    5676{
    57     if (m_completionHandler)
    58         m_completionHandler(WebCore::PolicyAction::Ignore, nullptr, ShouldProcessSwapIfPossible::No);
     77    ASSERT(!m_policyResult);
     78    if (m_reply)
     79        m_reply(WebCore::PolicyAction::Ignore, nullptr, ShouldProcessSwapIfPossible::No, { });
    5980}
    6081
  • trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h

    r234210 r234513  
    11/*
    2  * Copyright (C) 2010 Apple Inc. All rights reserved.
     2 * Copyright (C) 2010-2018 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2828#include "APIObject.h"
    2929#include <wtf/CompletionHandler.h>
     30#include <wtf/Vector.h>
    3031
    3132namespace API {
     
    3940namespace WebKit {
    4041
     42class SafeBrowsingResult;
     43
    4144enum class ShouldProcessSwapIfPossible { No, Yes };
     45enum class ShouldExpectSafeBrowsingResult { No, Yes };
    4246
    4347class WebFramePolicyListenerProxy : public API::ObjectImpl<API::Object::Type::FramePolicyListener> {
    4448public:
    4549
    46     static Ref<WebFramePolicyListenerProxy> create(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible)>&& completionHandler)
     50    using Reply = CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible, Vector<SafeBrowsingResult>&&)>;
     51    static Ref<WebFramePolicyListenerProxy> create(Reply&& reply, ShouldExpectSafeBrowsingResult expect)
    4752    {
    48         return adoptRef(*new WebFramePolicyListenerProxy(WTFMove(completionHandler)));
     53        return adoptRef(*new WebFramePolicyListenerProxy(WTFMove(reply), expect));
    4954    }
     55    ~WebFramePolicyListenerProxy();
    5056
    5157    void use(API::WebsitePolicies* = nullptr, ShouldProcessSwapIfPossible = ShouldProcessSwapIfPossible::No);
    5258    void download();
    5359    void ignore();
     60   
     61    void didReceiveSafeBrowsingResults(Vector<SafeBrowsingResult>&&);
    5462
    5563private:
    56     WebFramePolicyListenerProxy(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible)>&&);
     64    WebFramePolicyListenerProxy(Reply&&, ShouldExpectSafeBrowsingResult);
    5765
    58     CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible)> m_completionHandler;
     66    std::optional<std::pair<RefPtr<API::WebsitePolicies>, ShouldProcessSwapIfPossible>> m_policyResult;
     67    std::optional<Vector<SafeBrowsingResult>> m_safeBrowsingResults;
     68    Reply m_reply;
    5969};
    6070
  • trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp

    r234332 r234513  
    179179}
    180180
    181 WebFramePolicyListenerProxy& WebFrameProxy::setUpPolicyListenerProxy(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible)>&& completionHandler)
     181WebFramePolicyListenerProxy& WebFrameProxy::setUpPolicyListenerProxy(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible, Vector<SafeBrowsingResult>&&)>&& completionHandler, ShouldExpectSafeBrowsingResult expect)
    182182{
    183183    if (m_activeListener)
    184184        m_activeListener->ignore();
    185     m_activeListener = WebFramePolicyListenerProxy::create([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (WebCore::PolicyAction action, API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap) mutable {
    186         completionHandler(action, policies, swap);
     185    m_activeListener = WebFramePolicyListenerProxy::create([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (WebCore::PolicyAction action, API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap, Vector<SafeBrowsingResult>&& safeBrowsingResults) mutable {
     186        completionHandler(action, policies, swap, WTFMove(safeBrowsingResults));
    187187        m_activeListener = nullptr;
    188     });
     188    }, expect);
    189189    return *m_activeListener;
    190190}
  • trunk/Source/WebKit/UIProcess/WebFrameProxy.h

    r234210 r234513  
    4949
    5050namespace WebKit {
     51class SafeBrowsingResult;
    5152class WebCertificateInfo;
    5253class WebFramePolicyListenerProxy;
    5354class WebPageProxy;
    5455class WebsiteDataStore;
     56enum class ShouldExpectSafeBrowsingResult;
    5557enum class ShouldProcessSwapIfPossible;
    5658struct WebsitePoliciesData;
     
    116118    void didChangeTitle(const String&);
    117119
    118     WebFramePolicyListenerProxy& setUpPolicyListenerProxy(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible)>&&);
     120    WebFramePolicyListenerProxy& setUpPolicyListenerProxy(CompletionHandler<void(WebCore::PolicyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible, Vector<SafeBrowsingResult>&&)>&&, ShouldExpectSafeBrowsingResult);
    119121
    120122#if ENABLE(CONTENT_FILTERING)
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r234459 r234513  
    7777#include "PluginProcessManager.h"
    7878#include "PrintInfo.h"
     79#include "SafeBrowsingResult.h"
    7980#include "TextChecker.h"
    8081#include "TextCheckerState.h"
     
    40034004}
    40044005
     4006#if !PLATFORM(COCOA)
     4007void WebPageProxy::beginSafeBrowsingCheck(const URL&, WebFramePolicyListenerProxy& listener)
     4008{
     4009    listener.didReceiveSafeBrowsingResults({ });
     4010}
     4011#endif
     4012
    40054013void WebPageProxy::decidePolicyForNavigationActionAsync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, uint64_t listenerID)
    40064014{
     
    40644072#endif
    40654073
    4066     auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frame = makeRef(*frame), sender = sender.copyRef(), navigation] (WebCore::PolicyAction policyAction, API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap) mutable {
     4074    auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frame = makeRef(*frame), sender = sender.copyRef(), navigation] (WebCore::PolicyAction policyAction, API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap, Vector<SafeBrowsingResult>&&) mutable {
     4075        // FIXME: do something with the SafeBrowsingResults.
     4076
    40674077        std::optional<WebsitePoliciesData> data;
    40684078        if (policies) {
     
    40854095
    40864096        receivedPolicyDecision(policyAction, navigation.get(), WTFMove(data), WTFMove(sender));
    4087     }));
     4097    }, ShouldExpectSafeBrowsingResult::Yes));
     4098    beginSafeBrowsingCheck(request.url(), listener);
    40884099
    40894100    API::Navigation* mainFrameNavigation = frame->isMainFrame() ? navigation.get() : nullptr;
     
    41314142    MESSAGE_CHECK_URL(request.url());
    41324143
    4133     auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), listenerID, frameID] (WebCore::PolicyAction policyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible swap) mutable {
     4144    auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), listenerID, frameID] (WebCore::PolicyAction policyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible swap, Vector<SafeBrowsingResult>&& safeBrowsingResults) mutable {
    41344145        // FIXME: Assert the API::WebsitePolicies* is nullptr here once clients of WKFramePolicyListenerUseWithPolicies go away.
    41354146        RELEASE_ASSERT(swap == ShouldProcessSwapIfPossible::No);
     4147        ASSERT_UNUSED(safeBrowsingResults, safeBrowsingResults.isEmpty());
    41364148        receivedPolicyDecision(policyAction, nullptr, std::nullopt, PolicyDecisionSender::create([this, protectedThis = WTFMove(protectedThis), frameID, listenerID] (auto... args) {
    41374149            m_process->send(Messages::WebPage::DidReceivePolicyDecision(frameID, listenerID, args...), m_pageID);
    41384150        }));
    4139     }));
     4151    }, ShouldExpectSafeBrowsingResult::No));
    41404152
    41414153    if (m_navigationClient) {
     
    41664178
    41674179    RefPtr<API::Navigation> navigation = navigationID ? &m_navigationState->navigation(navigationID) : nullptr;
    4168     auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frameID, listenerID, navigation = WTFMove(navigation)] (WebCore::PolicyAction policyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible swap) mutable {
     4180    auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frameID, listenerID, navigation = WTFMove(navigation)] (WebCore::PolicyAction policyAction, API::WebsitePolicies*, ShouldProcessSwapIfPossible swap, Vector<SafeBrowsingResult>&& safeBrowsingResults) mutable {
    41694181        // FIXME: Assert the API::WebsitePolicies* is nullptr here once clients of WKFramePolicyListenerUseWithPolicies go away.
    41704182        RELEASE_ASSERT(swap == ShouldProcessSwapIfPossible::No);
     4183        ASSERT_UNUSED(safeBrowsingResults, safeBrowsingResults.isEmpty());
    41714184        receivedPolicyDecision(policyAction, navigation.get(), std::nullopt, PolicyDecisionSender::create([this, protectedThis = WTFMove(protectedThis), frameID, listenerID] (auto... args) {
    41724185            m_process->send(Messages::WebPage::DidReceivePolicyDecision(frameID, listenerID, args...), m_pageID);
    41734186        }));
    4174     }));
     4187    }, ShouldExpectSafeBrowsingResult::No));
    41754188
    41764189    if (m_navigationClient) {
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r234375 r234513  
    14291429    void decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&);
    14301430    void unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError&, const UserData&);
     1431    void beginSafeBrowsingCheck(const WebCore::URL&, WebFramePolicyListenerProxy&);
    14311432
    14321433    void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const Vector<std::pair<String, String>>& textFieldValues, uint64_t listenerID, const UserData&);
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r234488 r234513  
    12901290                5C9E56821DF7F1AB00C9EE33 /* WKWebsitePolicies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C9E56801DF7F05500C9EE33 /* WKWebsitePolicies.cpp */; };
    12911291                5C9E56831DF7F1B300C9EE33 /* WKWebsitePolicies.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9E56811DF7F05500C9EE33 /* WKWebsitePolicies.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1292                5CA9854A210BEB640057EB6B /* SafeBrowsingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA98549210BEB5A0057EB6B /* SafeBrowsingResult.h */; };
     1293                5CA9854C210BEB7D0057EB6B /* SafeBrowsingResultCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CA9854B210BEB730057EB6B /* SafeBrowsingResultCocoa.mm */; };
    12921294                5CB2378B1DF0DE5300117AA3 /* _WKWebsitePolicies.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB2378A1DF0DD4300117AA3 /* _WKWebsitePolicies.mm */; };
    12931295                5CB2378C1DF0DE6E00117AA3 /* _WKWebsitePolicies.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB237891DF0DD4300117AA3 /* _WKWebsitePolicies.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    38553857                5C9E56801DF7F05500C9EE33 /* WKWebsitePolicies.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKWebsitePolicies.cpp; sourceTree = "<group>"; };
    38563858                5C9E56811DF7F05500C9EE33 /* WKWebsitePolicies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebsitePolicies.h; sourceTree = "<group>"; };
     3859                5CA98549210BEB5A0057EB6B /* SafeBrowsingResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SafeBrowsingResult.h; sourceTree = "<group>"; };
     3860                5CA9854B210BEB730057EB6B /* SafeBrowsingResultCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SafeBrowsingResultCocoa.mm; sourceTree = "<group>"; };
    38573861                5CB237891DF0DD4300117AA3 /* _WKWebsitePolicies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKWebsitePolicies.h; sourceTree = "<group>"; };
    38583862                5CB2378A1DF0DD4300117AA3 /* _WKWebsitePolicies.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKWebsitePolicies.mm; sourceTree = "<group>"; };
     
    56695673                                CDA29A1F1CBEB5FB00901CCF /* PlaybackSessionManagerProxy.mm */,
    56705674                                837A660020E2AD8400A9DBD8 /* ResourceLoadStatisticsMemoryStoreCocoa.mm */,
     5675                                5CA9854B210BEB730057EB6B /* SafeBrowsingResultCocoa.mm */,
    56715676                                1A002D47196B345D00B9AD44 /* SessionStateCoding.h */,
    56725677                                1A002D46196B345D00B9AD44 /* SessionStateCoding.mm */,
     
    74547459                                BC111B08112F5E3C00337BAB /* ResponsivenessTimer.cpp */,
    74557460                                1A30066C1110F4F70031937C /* ResponsivenessTimer.h */,
     7461                                5CA98549210BEB5A0057EB6B /* SafeBrowsingResult.h */,
    74567462                                414DEDD61F9EDDE00047C40D /* ServiceWorkerProcessProxy.cpp */,
    74577463                                414DEDD51F9EDDDF0047C40D /* ServiceWorkerProcessProxy.h */,
     
    93489354                                1A30066E1110F4F70031937C /* ResponsivenessTimer.h in Headers */,
    93499355                                410482CE1DDD324F00F006D0 /* RTCNetwork.h in Headers */,
     9356                                5CA9854A210BEB640057EB6B /* SafeBrowsingResult.h in Headers */,
    93509357                                0E97D74D200E900400BF6643 /* SafeBrowsingSPI.h in Headers */,
    93519358                                BC2D021712AC41CB00E732A3 /* SameDocumentNavigationType.h in Headers */,
     
    1117211179                                410482CD1DDD324C00F006D0 /* RTCNetwork.cpp in Sources */,
    1117311180                                41B28B0A1F83AD4200FB52AC /* RTCPacketOptions.cpp in Sources */,
     11181                                5CA9854C210BEB7D0057EB6B /* SafeBrowsingResultCocoa.mm in Sources */,
    1117411182                                1AAB4AAA1296F1540023952F /* SandboxExtensionMac.mm in Sources */,
    1117511183                                E1E552C416AE065F004ED653 /* SandboxInitialiationParametersMac.mm in Sources */,
  • trunk/Source/WebKit/config.h

    r233501 r234513  
    127127#endif
    128128#endif
     129
     130#if ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000)) && !defined(__i386__)
     131#define HAVE_SAFE_BROWSING 1
     132#else
     133#define HAVE_SAFE_BROWSING 0
     134#endif
Note: See TracChangeset for help on using the changeset viewer.