blob: 9ab19211c6e7bc374c5cc6056b454f60f7cd8690 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="mock_controller.js"></script>
</head>
<body>
<script>
var mockControl, mockWindow, oldIsMac;
var chrome = chrome || {};
chrome.tabs = chrome.tabs || {};
chrome.windows = chrome.windows || {};
var MSG = 'MSG';
var localStrings = {
getStringF: function(msg, number) {
assertEquals('should_open_all', msg);
return MSG + number;
}
};
var URL1 = 'http://chromium.org/';
var URL2 = '#hash';
var BASE = 'http://www.google.com/';
function setUp() {
mockController = new MockController();
mockController.createFunctionMock(chrome.tabs, 'create');
mockController.createFunctionMock(chrome.windows, 'create');
oldIsMac = Object.getOwnPropertyDescriptor(cr, 'isMac');
mockWindow = {
confirm: mockController.createFunctionMock(),
location: {
get href() {
return BASE;
},
set href(url) {
assertEquals(URL1, url);
}
}
};
mockWindow.confirm.returnValue = false;
}
function tearDown() {
mockController.verifyMocks();
mockController.reset();
Object.defineProperty(cr, 'isMac', oldIsMac);
}
function testGetWarningMessage() {
var lc = new cr.LinkController(localStrings);
var msg = lc.getWarningMessage(10);
assertEquals(MSG + 10, msg);
}
function openUrlFromEventHelper(event, isMac, expectedKind) {
var lc = new cr.LinkController(localStrings);
Object.defineProperty(cr, 'isMac', {get: function() { return isMac }});
var mock = lc.openUrls = mockController.createFunctionMock();
mock.addExpectation([URL1], expectedKind);
lc.openUrlFromEvent(URL1, event);
}
///////////////////////////////////////////////////////////////////////////////
function testOpenUrlFromEventForegroundTab() {
var e = {
type: 'click',
button: 0,
shiftKey: true,
ctrlKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.FOREGROUND_TAB);
}
function testOpenUrlFromEventForegroundTabMac() {
var e = {
type: 'click',
button: 0,
shiftKey: true,
metaKey: true
};
openUrlFromEventHelper(e, true, cr.LinkKind.FOREGROUND_TAB);
}
function testOpenUrlFromEventForegroundTabEnter() {
var e = {
type: 'keydown',
key: 'Enter',
shiftKey: true,
ctrlKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.FOREGROUND_TAB);
}
function testOpenUrlFromEventForegroundTabEnterMac() {
var e = {
type: 'keydown',
key: 'Enter',
shiftKey: true,
metaKey: true
};
openUrlFromEventHelper(e, true, cr.LinkKind.FOREGROUND_TAB);
}
function testOpenUrlFromEventForegroundTabMiddleClick() {
var e = {
type: 'click',
button: 1,
shiftKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.FOREGROUND_TAB);
}
///////////////////////////////////////////////////////////////////////////////
function testOpenUrlFromEventBackgroundTab() {
var e = {
type: 'click',
button: 0,
ctrlKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.BACKGROUND_TAB);
}
function testOpenUrlFromEventBackgroundTabMac() {
var e = {
type: 'click',
button: 0,
metaKey: true
};
openUrlFromEventHelper(e, true, cr.LinkKind.BACKGROUND_TAB);
}
function testOpenUrlFromEventBackgroundTabEnter() {
var e = {
type: 'keydown',
key: 'Enter',
ctrlKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.BACKGROUND_TAB);
}
function testOpenUrlFromEventBackgroundTabEnterMac() {
var e = {
type: 'keydown',
key: 'Enter',
metaKey: true
};
openUrlFromEventHelper(e, true, cr.LinkKind.BACKGROUND_TAB);
}
function testOpenUrlFromEventBackgroundTabMiddleClick() {
var e = {
type: 'click',
button: 1
};
openUrlFromEventHelper(e, false, cr.LinkKind.BACKGROUND_TAB);
}
///////////////////////////////////////////////////////////////////////////////
function testOpenUrlFromEventWindow() {
var e = {
type: 'click',
button: 0,
shiftKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.WINDOW);
}
function testOpenUrlFromEventWindowEnter() {
var e = {
type: 'keydown',
key: 'Enter',
shiftKey: true
};
openUrlFromEventHelper(e, false, cr.LinkKind.WINDOW);
}
///////////////////////////////////////////////////////////////////////////////
function testOpenUrlFromEventSelf() {
var e = {
type: 'click',
button: 0
};
openUrlFromEventHelper(e, false, cr.LinkKind.SELF);
}
function testOpenUrlFromEventSelfEnter() {
var e = {
type: 'keydown',
key: 'Enter'
};
openUrlFromEventHelper(e, false, cr.LinkKind.SELF);
}
///////////////////////////////////////////////////////////////////////////////
function testOpenUrl() {
var lc = new cr.LinkController(localStrings);
var mock = mockController.createFunctionMock(lc, 'openUrls');
mock.addExpectation([URL1], cr.LinkKind.SELF);
lc.openUrl(URL1, cr.LinkKind.SELF);
}
/////////////////////////////// OpenUrls //////////////////////////////////////
function testOpenUrlsTooFew() {
var lc = new cr.LinkController(localStrings);
lc.openUrls([], cr.LinkKind.SELF);
}
function testOpenUrlsTooMany() {
var lc = new cr.LinkController(localStrings);
lc.warningLimit = 9;
var urls = new Array(lc.warningLimit + 1);
lc.window = mockWindow;
lc.window.confirm.addExpectation('MSG10');
lc.openUrls(urls, cr.LinkKind.SELF);
}
function testOpenUrlsSelf() {
var lc = new cr.LinkController(localStrings);
lc.window = mockWindow;
lc.openUrls([URL1], cr.LinkKind.SELF);
}
function testOpenUrlsForegroundTab() {
var lc = new cr.LinkController(localStrings);
lc.window = mockWindow;
chrome.tabs.create.addExpectation({url: URL1, selected: true});
chrome.tabs.create.addExpectation({
url: BASE + URL2,
selected: false
});
lc.openUrls([URL1, URL2], cr.LinkKind.FOREGROUND_TAB);
}
function testOpenUrlsBackgroundTab() {
var lc = new cr.LinkController(localStrings);
lc.window = mockWindow;
chrome.tabs.create.addExpectation({url: URL1, selected: false});
chrome.tabs.create.addExpectation({
url: BASE + URL2,
selected: false
});
lc.openUrls([URL1, URL2], cr.LinkKind.BACKGROUND_TAB);
}
function testOpenUrlsWindow() {
var lc = new cr.LinkController(localStrings);
lc.window = mockWindow;
chrome.windows.create.addExpectation({
url: [URL1, BASE + URL2],
incognito: false
});
lc.openUrls([URL1, URL2], cr.LinkKind.WINDOW);
}
function testOpenUrlsIncognito() {
var lc = new cr.LinkController(localStrings);
lc.window = mockWindow;
chrome.windows.create.addExpectation({
url: [URL1, BASE + URL2],
incognito: true
});
lc.openUrls([URL1, URL2], cr.LinkKind.INCOGNITO);
}
</script>
</body>
</html>