Changeset 141381 in webkit


Ignore:
Timestamp:
Jan 31, 2013 12:00:54 AM (11 years ago)
Author:
jochen@chromium.org
Message:

[chromium] move remaining resource load related methods to TestRunner library
https://bugs.webkit.org/show_bug.cgi?id=108334

Reviewed by Adam Barth.

  • DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:

(WebTestRunner::WebTestDelegate::allowExternalPages):

  • DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:

(WebKit):
(WebTestProxyBase):
(WebTestRunner::WebTestProxy::canHandleRequest):
(WebTestRunner::WebTestProxy::cannotHandleRequestError):
(WebTestRunner::WebTestProxy::didCreateDataSource):

  • DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:

(WebTestRunner::WebTestProxyBase::canHandleRequest):
(WebTestRunner):
(WebTestRunner::WebTestProxyBase::cannotHandleRequestError):
(WebTestRunner::WebTestProxyBase::didCreateDataSource):
(WebTestRunner::WebTestProxyBase::willSendRequest):

  • DumpRenderTree/chromium/WebViewHost.cpp:

(WebViewHost::canHandleRequest):
(WebViewHost::didCreateDataSource):
(WebViewHost::willSendRequest):
(WebViewHost::allowExternalPages):

  • DumpRenderTree/chromium/WebViewHost.h:
Location:
trunk/Tools
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r141369 r141381  
     12013-01-30  Jochen Eisinger  <jochen@chromium.org>
     2
     3        [chromium] move remaining resource load related methods to TestRunner library
     4        https://bugs.webkit.org/show_bug.cgi?id=108334
     5
     6        Reviewed by Adam Barth.
     7
     8        * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
     9        (WebTestRunner::WebTestDelegate::allowExternalPages):
     10        * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
     11        (WebKit):
     12        (WebTestProxyBase):
     13        (WebTestRunner::WebTestProxy::canHandleRequest):
     14        (WebTestRunner::WebTestProxy::cannotHandleRequestError):
     15        (WebTestRunner::WebTestProxy::didCreateDataSource):
     16        * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
     17        (WebTestRunner::WebTestProxyBase::canHandleRequest):
     18        (WebTestRunner):
     19        (WebTestRunner::WebTestProxyBase::cannotHandleRequestError):
     20        (WebTestRunner::WebTestProxyBase::didCreateDataSource):
     21        (WebTestRunner::WebTestProxyBase::willSendRequest):
     22        * DumpRenderTree/chromium/WebViewHost.cpp:
     23        (WebViewHost::canHandleRequest):
     24        (WebViewHost::didCreateDataSource):
     25        (WebViewHost::willSendRequest):
     26        (WebViewHost::allowExternalPages):
     27        * DumpRenderTree/chromium/WebViewHost.h:
     28
    1292013-01-30  Hajime Morrita  <morrita@google.com>
    230
  • trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h

    r141298 r141381  
    121121    virtual void reload() { }
    122122    virtual void loadURLForFrame(const WebKit::WebURL&, const std::string&) { }
     123    virtual bool allowExternalPages() { return false; }
    123124};
    124125
  • trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h

    r141298 r141381  
    3333
    3434#include "Platform/chromium/public/WebRect.h"
     35#include "Platform/chromium/public/WebURLError.h"
    3536#include "WebKit/chromium/public/WebAccessibilityNotification.h"
    3637#include "WebKit/chromium/public/WebDragOperation.h"
     
    4647class WebAccessibilityObject;
    4748class WebCachedURLRequest;
     49class WebDataSource;
    4850class WebDragData;
    4951class WebFrame;
     
    6466struct WebPoint;
    6567struct WebSize;
    66 struct WebURLError;
    6768struct WebWindowFeatures;
    6869}
     
    138139    void assignIdentifierToRequest(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLRequest&);
    139140    void willRequestResource(WebKit::WebFrame*, const WebKit::WebCachedURLRequest&);
     141    bool canHandleRequest(WebKit::WebFrame*, const WebKit::WebURLRequest&);
     142    WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
     143    void didCreateDataSource(WebKit::WebFrame*, WebKit::WebDataSource*);
    140144    void willSendRequest(WebKit::WebFrame*, unsigned identifier, WebKit::WebURLRequest&, const WebKit::WebURLResponse& redirectResponse);
    141145    void didReceiveResponse(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLResponse&);
     
    398402        Base::willRequestResource(frame, request);
    399403    }
     404    virtual bool canHandleRequest(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request)
     405    {
     406        if (!WebTestProxyBase::canHandleRequest(frame, request))
     407            return false;
     408        return Base::canHandleRequest(frame, request);
     409    }
     410    virtual WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request)
     411    {
     412        return WebTestProxyBase::cannotHandleRequestError(frame, request);
     413    }
     414    virtual void didCreateDataSource(WebKit::WebFrame* frame, WebKit::WebDataSource* ds)
     415    {
     416        WebTestProxyBase::didCreateDataSource(frame, ds);
     417        Base::didCreateDataSource(frame, ds);
     418    }
    400419    virtual void willSendRequest(WebKit::WebFrame* frame, unsigned identifier, WebKit::WebURLRequest& request, const WebKit::WebURLResponse& redirectResponse)
    401420    {
  • trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp

    r141298 r141381  
    3838#include "WebCachedURLRequest.h"
    3939#include "WebConsoleMessage.h"
     40#include "WebDataSource.h"
    4041#include "WebElement.h"
    4142#include "WebEventSender.h"
     
    189190}
    190191
     192bool isLocalhost(const string& host)
     193{
     194    return host == "127.0.0.1" || host == "localhost";
     195}
     196
     197bool hostIsUsedBySomeTestsToGenerateError(const string& host)
     198{
     199    return host == "255.255.255.255";
     200}
     201
    191202// Used to write a platform neutral file:/// URL by only taking the filename
    192203// (e.g., converts "file:///tmp/foo.txt" to just "foo.txt").
     
    781792        m_delegate->printMessage(string(" requested '") + URLDescription(request.urlRequest().url()).c_str() + "'\n");
    782793    }
     794}
     795
     796bool WebTestProxyBase::canHandleRequest(WebFrame*, const WebURLRequest& request)
     797{
     798    GURL url = request.url();
     799    // Just reject the scheme used in
     800    // LayoutTests/http/tests/misc/redirect-to-external-url.html
     801    return !url.SchemeIs("spaceballs");
     802}
     803
     804WebURLError WebTestProxyBase::cannotHandleRequestError(WebFrame*, const WebURLRequest& request)
     805{
     806    WebURLError error;
     807    // A WebKit layout test expects the following values.
     808    // unableToImplementPolicyWithError() below prints them.
     809    error.domain = WebString::fromUTF8("WebKitErrorDomain");
     810    error.reason = 101;
     811    error.unreachableURL = request.url();
     812    return error;
     813}
     814
     815void WebTestProxyBase::didCreateDataSource(WebFrame*, WebDataSource* ds)
     816{
     817    if (m_testInterfaces->testRunner() && !m_testInterfaces->testRunner()->deferMainResourceDataLoad())
     818        ds->setDeferMainResourceDataLoad(false);
    783819}
    784820
     
    823859            request.clearHTTPHeaderField(WebString::fromUTF8(*header));
    824860    }
     861
     862    string host = url.host();
     863    if (!host.empty() && (url.SchemeIs("http") || url.SchemeIs("https"))) {
     864        if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host)
     865            && ((!mainDocumentURL.SchemeIs("http") && !mainDocumentURL.SchemeIs("https")) || isLocalhost(mainDocumentURL.host()))
     866            && !m_delegate->allowExternalPages()) {
     867            m_delegate->printMessage(string("Blocked access to external URL ") + requestURL + "\n");
     868            blockRequest(request);
     869            return;
     870        }
     871    }
     872
     873    // Set the new substituted URL.
     874    request.setURL(m_delegate->rewriteLayoutTestsURL(request.url().spec()));
    825875}
    826876
  • trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp

    r141298 r141381  
    583583bool WebViewHost::canHandleRequest(WebFrame*, const WebURLRequest& request)
    584584{
    585     GURL url = request.url();
    586     // Just reject the scheme used in
    587     // LayoutTests/http/tests/misc/redirect-to-external-url.html
    588     return !url.SchemeIs("spaceballs");
    589 }
    590 
    591 WebURLError WebViewHost::cannotHandleRequestError(WebFrame*, const WebURLRequest& request)
    592 {
    593     WebURLError error;
    594     // A WebKit layout test expects the following values.
    595     // unableToImplementPolicyWithError() below prints them.
    596     error.domain = WebString::fromUTF8("WebKitErrorDomain");
    597     error.reason = 101;
    598     error.unreachableURL = request.url();
    599     return error;
     585    return true;
    600586}
    601587
     
    612598{
    613599    ds->setExtraData(m_pendingExtraData.leakPtr());
    614     if (!testRunner()->deferMainResourceDataLoad())
    615         ds->setDeferMainResourceDataLoad(false);
    616600}
    617601
     
    638622}
    639623
    640 static void blockRequest(WebURLRequest& request)
    641 {
    642     request.setURL(WebURL());
    643 }
    644 
    645 static bool isLocalhost(const string& host)
    646 {
    647     return host == "127.0.0.1" || host == "localhost";
    648 }
    649 
    650 static bool hostIsUsedBySomeTestsToGenerateError(const string& host)
    651 {
    652     return host == "255.255.255.255";
    653 }
    654 
    655 void WebViewHost::willSendRequest(WebFrame* frame, unsigned identifier, WebURLRequest& request, const WebURLResponse& redirectResponse)
     624void WebViewHost::willSendRequest(WebFrame* frame, unsigned, WebURLRequest& request, const WebURLResponse&)
    656625{
    657626    if (request.url().isEmpty())
    658627        return;
    659628
    660     // Need to use GURL for host() and SchemeIs()
    661     GURL url = request.url();
    662     string requestURL = url.possibly_invalid_spec();
    663 
    664     GURL mainDocumentURL = request.firstPartyForCookies();
    665 
    666629    request.setExtraData(webkit_support::CreateWebURLRequestExtraData(frame->document().referrerPolicy()));
    667 
    668     string host = url.host();
    669     if (!host.empty() && (url.SchemeIs("http") || url.SchemeIs("https"))) {
    670         if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host)
    671             && ((!mainDocumentURL.SchemeIs("http") && !mainDocumentURL.SchemeIs("https")) || isLocalhost(mainDocumentURL.host()))
    672             && !m_shell->allowExternalPages()) {
    673             printf("Blocked access to external URL %s\n", requestURL.c_str());
    674             blockRequest(request);
    675             return;
    676         }
    677     }
    678 
    679     // Set the new substituted URL.
    680     request.setURL(webkit_support::RewriteLayoutTestsURL(request.url().spec()));
    681630}
    682631
     
    1024973}
    1025974
     975bool WebViewHost::allowExternalPages()
     976{
     977    return m_shell->allowExternalPages();
     978}
     979
    1026980// Public functions -----------------------------------------------------------
    1027981
  • trunk/Tools/DumpRenderTree/chromium/WebViewHost.h

    r141298 r141381  
    177177    virtual void goToOffset(int) OVERRIDE;
    178178    virtual void reload() OVERRIDE;
    179     void loadURLForFrame(const WebKit::WebURL&, const std::string& frameName) OVERRIDE;
     179    virtual void loadURLForFrame(const WebKit::WebURL&, const std::string& frameName) OVERRIDE;
     180    virtual bool allowExternalPages() OVERRIDE;
    180181
    181182    // NavigationHost
     
    264265        WebKit::WebNavigationPolicy, bool isRedirect);
    265266    virtual bool canHandleRequest(WebKit::WebFrame*, const WebKit::WebURLRequest&);
    266     virtual WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
    267267    virtual WebKit::WebURLError cancelledError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
    268268    virtual void unableToImplementPolicyWithError(WebKit::WebFrame*, const WebKit::WebURLError&);
Note: See TracChangeset for help on using the changeset viewer.