Commit 819a05d3 authored by mkwst@chromium.org's avatar mkwst@chromium.org

Revert of XMLHttpRequest::overrideMimeType should throw InvalidStateError...

Revert of XMLHttpRequest::overrideMimeType should throw InvalidStateError (patchset #4 of https://codereview.chromium.org/478223002/)

Reason for revert:
It looks like this broke a number of Chromium-side browser tests: See http://build.chromium.org/p/chromium.webkit/builders/Linux%20Tests%20%28dbg%29/builds/3608 for example. http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20Blink&testType=browser_tests&tests=ExtensionBrowserTest.RSSParseFeedInvalidFeed1,ExtensionBrowserTest.RSSParseFeedInvalidFeed2,ExtensionBrowserTest.RSSParseFeedInvalidFeed3,ExtensionBrowserTest.RSSParseFeedInvalidFeed4,ExtensionBrowserTest.RSSParseFeedValidFeed0,ExtensionBrowserTest.RSSParseFeedValidFeed2,ExtensionBrowserTest.RSSParseFeedValidFeed3,ExtensionBrowserTest.RSSParseFeedValidFeed4,ExtensionBrowserTest.RSSParseFeedValidFeed5,ExtensionBrowserTest.RSSParseFeedValidFeed6,ExtensionBrowserTest.RSSParseFeedValidFeedNoLinks for all the broken tests.

Original issue's description:
> XMLHttpRequest::overrideMimeType should throw InvalidStateError
> 
> Before this CL, XMLHttpRequest accepted |overrideMimeType| regardless
> of its state. This is not conformant to the current spec:
> http://www.w3.org/TR/XMLHttpRequest2/#the-overridemimetype-method
> 
> This CL changes it to throw InvalidStateError when the state
> is LOADING or DONE, which aligns to the spec.
> 
> BUG=402375
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=180440

TBR=tyoshino@chromium.org,abarth@chromium.org,haraken@chromium.org,kouhei@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=402375

Review URL: https://codereview.chromium.org/486703002

git-svn-id: svn://svn.chromium.org/blink/trunk@180455 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 669ca780
Testing overrideMimeType when readyState is 0
PASS xhr.overrideMimeType('text/plain') did not throw exception.
Testing overrideMimeType when readyState is 1
PASS xhr.overrideMimeType('text/plain') did not throw exception.
Testing overrideMimeType when readyState is 1
PASS xhr.overrideMimeType('text/plain') did not throw exception.
Testing overrideMimeType when readyState is 1
PASS xhr.overrideMimeType('text/plain') did not throw exception.
Testing overrideMimeType when readyState is 2
PASS xhr.overrideMimeType('text/plain') did not throw exception.
Testing overrideMimeType when readyState is 3
PASS xhr.overrideMimeType('text/plain') threw exception InvalidStateError: Failed to execute 'overrideMimeType' on 'XMLHttpRequest': MimeType cannot be overridden when the state is LOADING or DONE..
Testing overrideMimeType when readyState is 4
PASS xhr.overrideMimeType('text/plain') threw exception InvalidStateError: Failed to execute 'overrideMimeType' on 'XMLHttpRequest': MimeType cannot be overridden when the state is LOADING or DONE..
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<script src="/js-test-resources/js-test.js"></script>
<script>
jsTestIsAsync = true;
function testOverrideMimeType(xhr) {
debug("Testing overrideMimeType when readyState is " + xhr.readyState);
var isAllowed = xhr.readyState < XMLHttpRequest.LOADING;
if (isAllowed) {
shouldNotThrow("xhr.overrideMimeType('text/plain')");
} else {
shouldThrow("xhr.overrideMimeType('text/plain')");
}
}
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
testOverrideMimeType(xhr);
if (xhr.readyState == XMLHttpRequest.DONE)
finishJSTest();
}
testOverrideMimeType(xhr);
xhr.open("GET", "resources/get.txt", true);
testOverrideMimeType(xhr);
xhr.send(null);
testOverrideMimeType(xhr);
</script>
......@@ -1089,14 +1089,12 @@ void XMLHttpRequest::handleRequestError(ExceptionCode exceptionCode, const Atomi
dispatchProgressEvent(EventTypeNames::loadend, receivedLength, expectedLength);
}
void XMLHttpRequest::overrideMimeType(const AtomicString& mimeType, ExceptionState& exceptionState)
void XMLHttpRequest::overrideMimeType(const AtomicString& override)
{
if (m_state == LOADING || m_state == DONE) {
exceptionState.throwDOMException(InvalidStateError, "MimeType cannot be overridden when the state is LOADING or DONE.");
return;
}
// FIXME: This method must throw an InvalidStateError exception when the
// XHR is in the LOADING or DONE state. http://crbug.com/402375
m_mimeTypeOverride = mimeType;
m_mimeTypeOverride = override;
}
void XMLHttpRequest::setRequestHeader(const AtomicString& name, const AtomicString& value, ExceptionState& exceptionState)
......
......@@ -113,7 +113,7 @@ public:
void send(ArrayBufferView*, ExceptionState&);
void abort();
void setRequestHeader(const AtomicString& name, const AtomicString& value, ExceptionState&);
void overrideMimeType(const AtomicString& override, ExceptionState&);
void overrideMimeType(const AtomicString& override);
String getAllResponseHeaders() const;
const AtomicString& getResponseHeader(const AtomicString&) const;
ScriptString responseText(ExceptionState&);
......
......@@ -82,5 +82,5 @@ enum XMLHttpRequestResponseType {
readonly attribute DOMString statusText;
// Extension
[RaisesException] void overrideMimeType(DOMString override);
void overrideMimeType(DOMString override);
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment