| Index: chrome/test/data/extensions/api_test/notifications/api/partial_update/background.js
|
| diff --git a/chrome/test/data/extensions/api_test/notifications/api/partial_update/background.js b/chrome/test/data/extensions/api_test/notifications/api/partial_update/background.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0245334f34382efba2ed98e61c7e44de3c3f6497
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/notifications/api/partial_update/background.js
|
| @@ -0,0 +1,141 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +const notifications = chrome.notifications;
|
| +
|
| +function arrayEquals(a, b) {
|
| + if (a === b) return true;
|
| + if (a == null || b == null) return false;
|
| + if (a.length !== b.length) return false;
|
| +
|
| + for (var i = 0; i < a.length; i++) {
|
| + if (a[i] !== b[i]) return false;
|
| + }
|
| + return true;
|
| +};
|
| +
|
| +function create(id, options) {
|
| + return new Promise(function (resolve, reject) {
|
| + notifications.create(id, options, function (id) {
|
| + if (chrome.runtime.lastError) {
|
| + reject(new Error("Unable to create notification"));
|
| + return;
|
| + }
|
| + console.log("Created with id: " + id);
|
| + resolve(id);
|
| + return;
|
| + });
|
| + });
|
| +};
|
| +
|
| +function update(id, options) {
|
| + return new Promise(function (resolve, reject) {
|
| + notifications.update(id, options, function (ok) {
|
| + if (chrome.runtime.lastError || !ok) {
|
| + reject(new Error("Unable to update notification"));
|
| + return;
|
| + }
|
| + console.log("Updated id: ", id);
|
| + resolve(ok);
|
| + return;
|
| + });
|
| + });
|
| +}
|
| +
|
| +function clear(id) {
|
| + return new Promise(function (resolve, reject) {
|
| + notifications.clear(id, function (ok) {
|
| + if (chrome.runtime.lastError || !ok) {
|
| + reject(new Error("Unable to clear notification"));
|
| + return;
|
| + }
|
| + resolve(ok);
|
| + return;
|
| + });
|
| + });
|
| +}
|
| +
|
| +function getAll() {
|
| + return new Promise(function (resolve, reject) {
|
| + notifications.getAll(function (ids) {
|
| + if (chrome.runtime.lastError) {
|
| + reject(new Error(chrome.runtime.lastError.message));
|
| + return;
|
| + }
|
| +
|
| + if (ids === undefined) {
|
| + resolve([]);
|
| + return
|
| + }
|
| +
|
| + var id_list = Object.keys(ids);
|
| + resolve(id_list);
|
| + });
|
| + });
|
| +}
|
| +
|
| +function clearAll() {
|
| + return getAll().then(function (ids) {
|
| + var idPromises = ids.map(function (id) { return clear(id); });
|
| + return Promise.all(idPromises);
|
| + });
|
| +}
|
| +
|
| +function succeedTest(testName) {
|
| + return function () {
|
| + return clearAll().then(
|
| + function () { chrome.test.succeed(testName); },
|
| + function (error) {
|
| + console.log("Unknown error in clearAll: " +
|
| + JSON.stringify(arguments));
|
| + });
|
| + };
|
| +}
|
| +
|
| +function failTest(testName) {
|
| + return function () {
|
| + return clearAll().then(
|
| + function () { chrome.test.fail(testName); },
|
| + function (error) {
|
| + console.log("Unknown error in clearAll: " +
|
| + JSON.stringify(error.message));
|
| + });
|
| + };
|
| +}
|
| +
|
| +function testPartialUpdate() {
|
| + var testName = "testPartialUpdate";
|
| + console.log("Starting " + testName);
|
| + var succeed = succeedTest(testName);
|
| + var fail = failTest(testName);
|
| +
|
| + const red_dot = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA" +
|
| + "AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO" +
|
| + "9TXL0Y4OHwAAAABJRU5ErkJggg==";
|
| +
|
| + var basicNotificationOptions = {
|
| + type: "basic",
|
| + title: "Basic title",
|
| + message: "Basic message",
|
| + iconUrl: red_dot,
|
| + buttons: [{title: "Button"}]
|
| + };
|
| +
|
| + // Create a notification.
|
| + create("testId", basicNotificationOptions)
|
| + // Then update a few items
|
| + .then(function () {
|
| + return update("testId", {
|
| + title: "Changed!",
|
| + message: "Too late! The show ended yesterday"
|
| + });
|
| + })
|
| + // Then update a few more items
|
| + .then(function () { return update("testId", {priority:2, buttons: []}); })
|
| + // The test will continue in C++, checking that all the updates "took"
|
| + .then(chrome.test.succeed, chrome.test.fail);
|
| +};
|
| +
|
| +
|
| +chrome.test.runTests([testPartialUpdate]);
|
|
|