Changeset 74234 in webkit


Ignore:
Timestamp:
Dec 17, 2010 12:22:16 AM (13 years ago)
Author:
caseq@chromium.org
Message:

2010-12-15 Andrey Kosyakov <caseq@chromium.org>

Reviewed by Pavel Feldman.

Web Inspector: [Extension API] add support for adding/overriding HTTP request headers
https://bugs.webkit.org/show_bug.cgi?id=50493

Test: http/tests/inspector/extensions-headers.html

  • inspector/Inspector.idl:
  • inspector/InspectorController.cpp: (WebCore::InspectorController::willSendRequest): Apply extra headers. (WebCore::InspectorController::setExtraHeaders):
  • inspector/InspectorController.h:
  • inspector/front-end/ExtensionAPI.js: (WebInspector.injectedExtensionAPI.Resources.prototype.getHAR): (WebInspector.injectedExtensionAPI.Resources.prototype.addRequestHeaders):
  • inspector/front-end/ExtensionServer.js: (WebInspector.ExtensionServer): (WebInspector.ExtensionServer.prototype._onAddRequestHeaders):

2010-12-15 Andrey Kosyakov <caseq@chromium.org>

Reviewed by Pavel Feldman.

Web Inspector: [Extension API] add support for adding/overriding HTTP request headers
Moved extensions test frameworks under http/tests/inspector, so HTTP tests may reuse it.
https://bugs.webkit.org/show_bug.cgi?id=50493

  • http/tests/inspector/extensions-headers-expected.txt: Added.
  • http/tests/inspector/extensions-headers.html: Added.
  • http/tests/inspector/extensions-test.js: Renamed from LayoutTests/inspector/extensions-test.js. (log): (extensionFunctions): (initialize_ExtensionsTest.InspectorTest.dispatchOnMessage): (initialize_ExtensionsTest.InspectorTest.runExtensionTests): (initialize_ExtensionsTest.extensionOutput): (initialize_ExtensionsTest.dumpSidebarContent): (initialize_ExtensionsTest.reloadPage): (test):
  • http/tests/inspector/resources/echo-headers.php: Added.
  • http/tests/inspector/resources/extension-main.html: Renamed from LayoutTests/inspector/resources/extension-main.html.
  • http/tests/inspector/resources/extension-main.js: Renamed from LayoutTests/inspector/resources/extension-main.js. (fetchTests.callback): (fetchTests): (runTests): (onTestsDone): (dispatchOnFrontend.callbackWrapper): (dispatchOnFrontend): (callbackAndNextTest.callbackWrapper): (callbackAndNextTest):
  • http/tests/inspector/resources/extension-panel.html: Renamed from LayoutTests/inspector/resources/extension-panel.html.
  • http/tests/inspector/resources/extension-sidebar.html: Renamed from LayoutTests/inspector/resources/extension-sidebar.html.
  • inspector/extensions-api-expected.txt:
  • inspector/extensions-api.html:
  • inspector/extensions-audits-api.html:
  • inspector/extensions-audits.html:
  • inspector/extensions-eval.html:
  • inspector/extensions-events.html:
  • inspector/extensions-resources-expected.txt:
  • inspector/extensions-resources.html:
  • inspector/extensions.html:
  • platform/chromium/test_expectations.txt:
Location:
trunk
Files:
3 added
17 edited
5 moved

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r74233 r74234  
     12010-12-15  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        Web Inspector: [Extension API] add support for adding/overriding HTTP request headers
     6        Moved extensions test frameworks under http/tests/inspector, so HTTP tests may reuse it.
     7        https://bugs.webkit.org/show_bug.cgi?id=50493
     8
     9        * http/tests/inspector/extensions-headers-expected.txt: Added.
     10        * http/tests/inspector/extensions-headers.html: Added.
     11        * http/tests/inspector/extensions-test.js: Renamed from LayoutTests/inspector/extensions-test.js.
     12        (log):
     13        (extensionFunctions):
     14        (initialize_ExtensionsTest.InspectorTest.dispatchOnMessage):
     15        (initialize_ExtensionsTest.InspectorTest.runExtensionTests):
     16        (initialize_ExtensionsTest.extensionOutput):
     17        (initialize_ExtensionsTest.dumpSidebarContent):
     18        (initialize_ExtensionsTest.reloadPage):
     19        (test):
     20        * http/tests/inspector/resources/echo-headers.php: Added.
     21        * http/tests/inspector/resources/extension-main.html: Renamed from LayoutTests/inspector/resources/extension-main.html.
     22        * http/tests/inspector/resources/extension-main.js: Renamed from LayoutTests/inspector/resources/extension-main.js.
     23        (fetchTests.callback):
     24        (fetchTests):
     25        (runTests):
     26        (onTestsDone):
     27        (dispatchOnFrontend.callbackWrapper):
     28        (dispatchOnFrontend):
     29        (callbackAndNextTest.callbackWrapper):
     30        (callbackAndNextTest):
     31        * http/tests/inspector/resources/extension-panel.html: Renamed from LayoutTests/inspector/resources/extension-panel.html.
     32        * http/tests/inspector/resources/extension-sidebar.html: Renamed from LayoutTests/inspector/resources/extension-sidebar.html.
     33        * inspector/extensions-api-expected.txt:
     34        * inspector/extensions-api.html:
     35        * inspector/extensions-audits-api.html:
     36        * inspector/extensions-audits.html:
     37        * inspector/extensions-eval.html:
     38        * inspector/extensions-events.html:
     39        * inspector/extensions-resources-expected.txt:
     40        * inspector/extensions-resources.html:
     41        * inspector/extensions.html:
     42        * platform/chromium/test_expectations.txt:
     43
    1442010-12-16  Kent Tamura  <tkent@chromium.org>
    245
  • trunk/LayoutTests/http/tests/inspector/extensions-test.js

    r74233 r74234  
    3636{
    3737    InjectedScriptAccess.getDefault().evaluate("location.href", "console", function(result) {
    38         var extensionURL = result.description.replace(/\/[^/]*$/, "/resources/extension-main.html");
     38        var pageURL = result.description;
     39        var extensionURL = (/^https?:/.test(pageURL) ?
     40            pageURL.replace(/^(https?:\/\/[^/]*\/).*$/,"$1") :
     41            pageURL.replace(/\/inspector\/[^/]*$/, "/http/tests")) +
     42            "/inspector/resources/extension-main.html";
    3943        WebInspector.addExtensions([{ startPage: extensionURL }]);
    4044    });
  • trunk/LayoutTests/http/tests/inspector/resources/extension-main.html

    r74233 r74234  
    11<html>
    22<head>
    3 <script src="../../http/tests/inspector/inspector-test.js"></script>
     3<script src="../inspector-test.js"></script>
    44<script type="text/javascript">
    55function output(message)
  • trunk/LayoutTests/inspector/extensions-api-expected.txt

    r72683 r74234  
    5252        }
    5353        getHAR : <function>
     54        addRequestHeaders : <function>
    5455    }
    5556    onReset : {
  • trunk/LayoutTests/inspector/extensions-api.html

    r66477 r74234  
    22<head>
    33<script src="../http/tests/inspector/inspector-test2.js"></script>
    4 <script src="extensions-test.js"></script>
     4<script src="../http/tests/inspector/extensions-test.js"></script>
    55<script type="text/javascript">
    66
  • trunk/LayoutTests/inspector/extensions-audits-api.html

    r66477 r74234  
    22<head>
    33<script src="../http/tests/inspector/inspector-test2.js"></script>
    4 <script src="extensions-test.js"></script>
     4<script src="../http/tests/inspector/extensions-test.js"></script>
    55<script src="audits-tests2.js"></script>
    66<script src="extensions-audits-tests.js"></script>
  • trunk/LayoutTests/inspector/extensions-audits.html

    r66477 r74234  
    22<head>
    33<script src="../http/tests/inspector/inspector-test2.js"></script>
    4 <script src="extensions-test.js"></script>
     4<script src="../http/tests/inspector/extensions-test.js"></script>
    55<script src="audits-tests2.js"></script>
    66<script src="extensions-audits-tests.js"></script>
  • trunk/LayoutTests/inspector/extensions-eval.html

    r72683 r74234  
    22<head>
    33<script src="../http/tests/inspector/inspector-test2.js"></script>
    4 <script src="extensions-test.js"></script>
     4<script src="../http/tests/inspector/extensions-test.js"></script>
    55<script type="text/javascript">
    66
  • trunk/LayoutTests/inspector/extensions-events.html

    r72683 r74234  
    22<head>
    33<script src="../http/tests/inspector/inspector-test2.js"></script>
    4 <script src="extensions-test.js"></script>
     4<script src="../http/tests/inspector/extensions-test.js"></script>
    55<script type="text/javascript">
    66
  • trunk/LayoutTests/inspector/extensions-resources-expected.txt

    r72683 r74234  
    66Running tests...
    77RUNNING TEST: extension_testGetHAR
     8resource: .../tests/inspector/extensions-test.js
    89resource: .../tests/inspector/inspector-test2.js
    910resource: .../LayoutTests/inspector/extensions-resources.html
    1011resource: .../LayoutTests/inspector/extensions-resources.html
    11 resource: .../LayoutTests/inspector/extensions-test.js
    1212resource: .../inspector/resources/abe.png
    1313resource: .../inspector/resources/Ahem.ttf
  • trunk/LayoutTests/inspector/extensions-resources.html

    r72683 r74234  
    1212
    1313<script src="../http/tests/inspector/inspector-test2.js"></script>
    14 <script src="extensions-test.js"></script>
     14<script src="../http/tests/inspector/extensions-test.js"></script>
    1515<script type="text/javascript">
    1616
  • trunk/LayoutTests/inspector/extensions.html

    r72683 r74234  
    22<head>
    33<script src="../http/tests/inspector/inspector-test2.js"></script>
    4 <script src="extensions-test.js"></script>
     4<script src="../http/tests/inspector/extensions-test.js"></script>
    55<script type="text/javascript">
    66
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r74231 r74234  
    624624WONTFIX SKIP : inspector/extensions-eval.html = FAIL
    625625WONTFIX SKIP : inspector/extensions-resources.html = TIMEOUT CRASH
     626WONTFIX SKIP : inspector/tests/inspector/extensions-headers.html = FAIL
    626627
    627628// Inspector tests in Debug build are very slow.  If we remove SLOW, we'll see
  • trunk/WebCore/ChangeLog

    r74232 r74234  
     12010-12-15  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        Web Inspector: [Extension API] add support for adding/overriding HTTP request headers
     6        https://bugs.webkit.org/show_bug.cgi?id=50493
     7
     8        Test: http/tests/inspector/extensions-headers.html
     9
     10        * inspector/Inspector.idl:
     11        * inspector/InspectorController.cpp:
     12        (WebCore::InspectorController::willSendRequest): Apply extra headers.
     13        (WebCore::InspectorController::setExtraHeaders):
     14        * inspector/InspectorController.h:
     15        * inspector/front-end/ExtensionAPI.js:
     16        (WebInspector.injectedExtensionAPI.Resources.prototype.getHAR):
     17        (WebInspector.injectedExtensionAPI.Resources.prototype.addRequestHeaders):
     18        * inspector/front-end/ExtensionServer.js:
     19        (WebInspector.ExtensionServer):
     20        (WebInspector.ExtensionServer.prototype._onAddRequestHeaders):
     21
    1222010-12-16  Koan-Sin Tan  <koansin.tan@gmail.com>
    223
  • trunk/WebCore/inspector/Inspector.idl

    r74103 r74234  
    9696        [notify, domain=Resources] void frameDetachedFromParent(out unsigned long frameId);
    9797       
     98        [domain=Inspector] void setExtraHeaders(in Object headers);
     99
    98100        [domain=Resources] void cachedResources(out Object resources);
    99101        [domain=Resources] void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out String content);
  • trunk/WebCore/inspector/InspectorController.cpp

    r74103 r74234  
    5454#include "GraphicsContext.h"
    5555#include "HTMLFrameOwnerElement.h"
     56#include "HTTPHeaderMap.h"
    5657#include "HitTestResult.h"
    5758#include "InjectedScript.h"
     
    830831        request.setReportRawHeaders(true);
    831832
     833    if (m_extraHeaders) {
     834        HTTPHeaderMap::const_iterator end = m_extraHeaders->end();
     835        for (HTTPHeaderMap::const_iterator it = m_extraHeaders->begin(); it != end; ++it)
     836            request.setHTTPHeaderField(it->first, it->second);
     837    }
     838
    832839    bool isMainResource = m_mainResourceIdentifier == identifier;
    833840
     
    18631870}
    18641871
     1872void InspectorController::setExtraHeaders(PassRefPtr<InspectorObject> headers)
     1873{
     1874    m_extraHeaders = adoptPtr(new HTTPHeaderMap());
     1875    InspectorObject::const_iterator end = headers->end();
     1876    for (InspectorObject::const_iterator it = headers->begin(); it != end; ++it) {
     1877        String value;
     1878        if (!it->second->asString(&value))
     1879            continue;
     1880        m_extraHeaders->add(it->first, value);
     1881    }
     1882}
     1883
    18651884} // namespace WebCore
    18661885
  • trunk/WebCore/inspector/InspectorController.h

    r74103 r74234  
    5252class FloatRect;
    5353class GraphicsContext;
     54class HTTPHeaderMap;
    5455class HitTestResult;
    5556class InjectedScript;
     
    174175    void scriptImported(unsigned long identifier, const String& sourceString);
    175176
     177    void setExtraHeaders(PassRefPtr<InspectorObject>);
     178
    176179    void ensureSettingsLoaded();
    177180
     
    396399
    397400    OwnPtr<InspectorProfilerAgent> m_profilerAgent;
     401    OwnPtr<HTTPHeaderMap> m_extraHeaders;
    398402#endif
    399403#if ENABLE(WORKERS)
  • trunk/WebCore/inspector/front-end/ExtensionAPI.js

    r72683 r74234  
    127127        }
    128128        return extensionServer.sendRequest({ command: "getHAR" }, callback && callbackWrapper);
     129    },
     130
     131    addRequestHeaders: function(headers)
     132    {
     133        return extensionServer.sendRequest({ command: "addRequestHeaders", headers: headers, extensionId: location.hostname });
    129134    }
    130135}
  • trunk/WebCore/inspector/front-end/ExtensionServer.js

    r72683 r74234  
    3434    this._handlers = {};
    3535    this._subscribers = {};
     36    this._extraHeaders = {};
    3637    this._status = new WebInspector.ExtensionStatus();
    3738
     39    this._registerHandler("addRequestHeaders", this._onAddRequestHeaders.bind(this));
    3840    this._registerHandler("addAuditCategory", this._onAddAuditCategory.bind(this));
    3941    this._registerHandler("addAuditResult", this._onAddAuditResult.bind(this));
     
    145147    },
    146148
     149    _onAddRequestHeaders: function(message)
     150    {
     151        var id = message.extensionId;
     152        if (typeof id !== "string")
     153            return this._status.E_BADARGTYPE("extensionId", typeof id, "string");
     154        var extensionHeaders = this._extraHeaders[id];
     155        if (!extensionHeaders) {
     156            extensionHeaders = {};
     157            this._extraHeaders[id] = extensionHeaders;
     158        }
     159        for (name in message.headers)
     160            extensionHeaders[name] = message.headers[name];
     161        var allHeaders = {};
     162        for (extension in this._extraHeaders) {
     163            var headers = this._extraHeaders[extension];
     164            for (name in headers) {
     165                if (typeof headers[name] === "string")
     166                    allHeaders[name] = headers[name];
     167            }
     168        }
     169        InspectorBackend.setExtraHeaders(allHeaders);
     170    },
     171
    147172    _onCreatePanel: function(message, port)
    148173    {
Note: See TracChangeset for help on using the changeset viewer.