Do not announce robot account token before account ID is available
[chromium-blink-merge.git] / chrome / test / data / extensions / api_test / wallpaper / test.js
blob827ceab3c6730c52bb6962d0436d6f53f1633af6
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 var pass = chrome.test.callbackPass;
6 var fail = chrome.test.callbackFail;
8 chrome.test.getConfig(function(config) {
10   var baseURL = "http://a.com:" + config.testServer.port +
11       "/extensions/api_test/wallpaper/";
13   /*
14    * Calls chrome.wallpaper.setWallpaper using an arraybuffer.
15    * @param {string} filePath An extension relative file path.
16    */
17   var testSetWallpaperFromArrayBuffer = function (filePath) {
18     // Loads an extension local file to an arraybuffer.
19     var url = chrome.runtime.getURL(filePath);
20     var wallpaperRequest = new XMLHttpRequest();
21     wallpaperRequest.open('GET', url, true);
22     wallpaperRequest.responseType = 'arraybuffer';
23     try {
24       wallpaperRequest.send(null);
25       wallpaperRequest.onloadend = function(e) {
26         if (wallpaperRequest.status === 200) {
27           chrome.wallpaper.setWallpaper(
28               {'data': wallpaperRequest.response,
29                'layout': 'CENTER_CROPPED',
30                'filename': 'test'},
31               // Set wallpaper directly with an arraybuffer should pass.
32               pass()
33           );
34         } else {
35           chrome.test.fail('Failed to load local file: ' + filePath + '.');
36         }
37       };
38     } catch (e) {
39       console.error(e);
40       chrome.test.fail('An error thrown when requesting wallpaper.');
41     }
42   };
44   /*
45    * Calls chrome.wallpaper.setWallpaper using an URL.
46    * @param {string} relativeURL The relative URL of an online image.
47    * @param {boolean} success True if expecting the API call success.
48    * @param {string=} optExpectedError The expected error string if API call
49    *     failed. An error string must be provided if success is set to false.
50    */
51   var testSetWallpaperFromURL = function (relativeURL,
52                                           success,
53                                           optExpectedError) {
54     var url = baseURL + relativeURL;
55     if (success) {
56       chrome.wallpaper.setWallpaper(
57           {'url': url,
58            'layout': 'CENTER_CROPPED',
59            'filename': 'test'},
60            // A valid url should set wallpaper correctly.
61            pass()
62       );
63     } else {
64       if (optExpectedError == undefined) {
65         chrome.test.fail('No expected error string is provided.');
66         return;
67       }
68       chrome.wallpaper.setWallpaper(
69          {'url': url,
70           'layout': 'CENTER_CROPPED',
71           'filename': 'test'},
72           // Expect a failure.
73           fail(optExpectedError));
74     }
75   };
77   chrome.test.runTests([
78     function setJpgWallpaperFromAppLocalFile() {
79       testSetWallpaperFromArrayBuffer('test.jpg');
80     },
81     function setPngWallpaperFromAppLocalFile() {
82       testSetWallpaperFromArrayBuffer('test.png');
83     },
84     function setJpgWallpaperFromURL () {
85       testSetWallpaperFromURL('test.jpg', true);
86     },
87     function setPngWallpaperFromURL () {
88       testSetWallpaperFromURL('test.png', true);
89     },
90     function setNoExistingWallpaperFromURL () {
91       // test1.jpg doesn't exist. Expect a 404 error.
92       var expectError =
93           'Downloading wallpaper test1.jpg failed. The response code is 404.';
94       testSetWallpaperFromURL('test1.jpg',
95                               false,
96                               expectError);
97     },
98     function newRequestCancelPreviousRequest() {
99       // The first request should be canceled.
100       testSetWallpaperFromURL('test.png',
101                               false,
102                               'Set wallpaper was canceled.');
103       testSetWallpaperFromURL('test.jpg', true);
104     }
105   ]);