[Presentation API, Android] Implement basic messaging
[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.
8  *
9  */
10 'use strict';
12 /**
13  * A fetcher of text files.
14  * @interface
15  */
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.
24  */
25 TextFetcher.prototype.fetch = function(url, opt_method, opt_body) {};
27 /**
28  * @constructor
29  * @implements {TextFetcher}
30  */
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.
40  */
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;
50       }
51       resolve(xhr.responseText);
52     };
53     xhr.onerror = function() {
54       // Treat any network-level errors as though the page didn't exist.
55       reject(404);
56     };
57     if (opt_body)
58       xhr.send(opt_body);
59     else
60       xhr.send();
61   });