Roll src/third_party/WebKit 3aea697:d9c6159 (svn 201973:201974)
[chromium-blink-merge.git] / chrome / browser / resources / cryptotoken / textfetcher.js
blobd6e18844acbf3fcf4d7c84b115fe04cb8d670854
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6 * @fileoverview Implements a simple XmlHttpRequest-based text document
7 * fetcher.
9 */
10 'use strict';
12 /**
13 * A fetcher of text files.
14 * @interface
16 function TextFetcher() {}
18 /**
19 * @param {string} url The URL to fetch.
20 * @param {string?} opt_method The HTTP method to use (default GET)
21 * @param {string?} opt_body The request body
22 * @return {!Promise<string>} A promise for the fetched text. In case of an
23 * error, this promise is rejected with an HTTP status code.
25 TextFetcher.prototype.fetch = function(url, opt_method, opt_body) {};
27 /**
28 * @constructor
29 * @implements {TextFetcher}
31 function XhrTextFetcher() {
34 /**
35 * @param {string} url The URL to fetch.
36 * @param {string?} opt_method The HTTP method to use (default GET)
37 * @param {string?} opt_body The request body
38 * @return {!Promise<string>} A promise for the fetched text. In case of an
39 * error, this promise is rejected with an HTTP status code.
41 XhrTextFetcher.prototype.fetch = function(url, opt_method, opt_body) {
42 return new Promise(function(resolve, reject) {
43 var xhr = new XMLHttpRequest();
44 var method = opt_method || 'GET';
45 xhr.open(method, url, true);
46 xhr.onloadend = function() {
47 if (xhr.status != 200) {
48 reject(xhr.status);
49 return;
51 resolve(xhr.responseText);
53 xhr.onerror = function() {
54 // Treat any network-level errors as though the page didn't exist.
55 reject(404);
57 if (opt_body)
58 xhr.send(opt_body);
59 else
60 xhr.send();
61 });