Commit 16bce341 authored by philipj@opera.com's avatar philipj@opera.com

Correct and simplify the cookie events browser test

The listeners were being removed in the completion callback to
chrome.cookies.set instead of in the chrome.cookiesonChanged
listener. Nothing guaranteed the order of these two, so the test
begun failing when delete started waiting for flush in
<https://chromiumcodereview.appspot.com/18032002>.

Simplify the tests by using listenOnce/listenForever.

BUG=302914

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@226456 0039d316-1c4b-4281-b951-d872f2087c98
parent 6b532a8f
......@@ -44,105 +44,82 @@ var OVERWRITE_COOKIE_POST = {
chrome.test.runTests([
function testSet() {
var testCompleted = chrome.test.callbackAdded();
var listener = function (info) {
chrome.test.listenOnce(chrome.cookies.onChanged, function (info) {
chrome.test.assertFalse(info.removed);
chrome.test.assertEq('explicit', info.cause);
chrome.test.assertEq(SET_REMOVE_COOKIE, info.cookie);
testCompleted();
};
chrome.cookies.onChanged.addListener(listener);
});
chrome.cookies.set({
url: 'http://a.com/path',
name: 'testSetRemove',
value: '42',
expirationDate: 12345678900
}, function () {
chrome.cookies.onChanged.removeListener(listener);
});
},
function testRemove() {
var testCompleted = chrome.test.callbackAdded();
var listener = function (info) {
chrome.test.listenOnce(chrome.cookies.onChanged, function (info) {
chrome.test.assertTrue(info.removed);
chrome.test.assertEq('explicit', info.cause);
chrome.test.assertEq(SET_REMOVE_COOKIE, info.cookie);
testCompleted();
};
chrome.cookies.onChanged.addListener(listener);
});
chrome.cookies.remove({
url: 'http://a.com/path',
name: 'testSetRemove'
}, function () {
chrome.cookies.onChanged.removeListener(listener);
});
},
function overwriteFirstSet() {
var testCompleted = chrome.test.callbackAdded();
var listener = function (info) {
chrome.test.listenOnce(chrome.cookies.onChanged, function (info) {
chrome.test.assertFalse(info.removed);
chrome.test.assertEq('explicit', info.cause);
chrome.test.assertEq(OVERWRITE_COOKIE_PRE, info.cookie);
testCompleted();
};
chrome.cookies.onChanged.addListener(listener);
});
chrome.cookies.set({
url: 'http://a.com/path',
name: 'testOverwrite',
value: '42',
expirationDate: 12345678900
}, function () {
chrome.cookies.onChanged.removeListener(listener);
});
},
function overwriteSecondSet() {
var removeCompleted = chrome.test.callbackAdded();
var setCompleted = chrome.test.callbackAdded();
var listenerRemove = function (info) {
if (info.removed) {
chrome.test.assertEq('overwrite', info.cause);
chrome.test.assertEq(OVERWRITE_COOKIE_PRE, info.cookie);
removeCompleted();
}
};
var listenerSet = function (info) {
if (!info.removed) {
chrome.test.assertEq('explicit', info.cause);
chrome.test.assertEq(OVERWRITE_COOKIE_POST, info.cookie);
setCompleted();
}
};
chrome.cookies.onChanged.addListener(listenerRemove);
chrome.cookies.onChanged.addListener(listenerSet);
var haveRemoved = false;
var haveSet = false;
var done = chrome.test.listenForever(chrome.cookies.onChanged,
function(info) {
if (info.removed) {
chrome.test.assertEq('overwrite', info.cause);
chrome.test.assertEq(OVERWRITE_COOKIE_PRE, info.cookie);
chrome.test.assertFalse(haveRemoved);
chrome.test.assertFalse(haveSet);
haveRemoved = true;
} else {
chrome.test.assertEq('explicit', info.cause);
chrome.test.assertEq(OVERWRITE_COOKIE_POST, info.cookie);
chrome.test.assertTrue(haveRemoved);
chrome.test.assertFalse(haveSet);
haveSet = true;
}
if (haveRemoved && haveSet) {
done();
}
});
chrome.cookies.set({
url: 'http://a.com/path',
name: 'testOverwrite',
value: '43',
expirationDate: 12345678900
}, function () {
chrome.cookies.onChanged.removeListener(listenerRemove);
chrome.cookies.onChanged.removeListener(listenerSet);
});
},
function overwriteExpired() {
var setCompleted = chrome.test.callbackAdded();
var listener = function (info) {
chrome.test.listenOnce(chrome.cookies.onChanged, function (info) {
chrome.test.assertTrue(info.removed);
chrome.test.assertEq('expired_overwrite', info.cause);
chrome.test.assertEq(OVERWRITE_COOKIE_POST, info.cookie);
setCompleted();
};
chrome.cookies.onChanged.addListener(listener);
});
chrome.cookies.set({
url: 'http://a.com/path',
name: 'testOverwrite',
value: '43',
expirationDate: 1
}, function () {
chrome.cookies.onChanged.removeListener(listener);
});
}
]);
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