// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
var menuItems = [{
id: 'menu_a',
label: 'MENU A',
style: 'check',
visible: true,
checked: false,
enabled: true
}, {
id: 'menu_b',
label: 'MENU b',
style: 'check',
visible: true,
checked: false,
enabled: true
}];
var menuItemsUpdate = [{
id: 'menu_a',
label: 'MENU A',
style: 'check',
visible: true,
checked: true,
enabled: true
}, {
id: 'menu_b',
label: 'MENU b',
style: 'check',
visible: false,
checked: false,
enabled: false
}];
var menuItemsActivated = [{
id: 'menu_a',
label: 'MENU A',
style: 'check',
visible: true,
checked: true,
enabled: true
}, {
id: 'menu_b',
label: 'MENU b',
style: 'check',
visible: true,
checked: true,
enabled: true
}];
var compareMenuItems = function(items1, items2) {
chrome.test.assertEq(items1.length, items2.length);
for (var i = 0; i < items1.length; i++) {
chrome.test.assertEq(items1[i]['id'], items2[i]['id']);
chrome.test.assertEq(items1[i]['label'], items2[i]['label']);
chrome.test.assertEq(items1[i]['style'], items2[i]['style']);
chrome.test.assertEq(items1[i]['visible'], items2[i]['visible']);
chrome.test.assertEq(items1[i]['checked'], items2[i]['checked']);
chrome.test.assertEq(items1[i]['enabled'], items2[i]['enabled']);
}
};
chrome.test.runTests([
function testActivateAndListChange() {
var list_change_count = 0;
chrome.input.ime.onActivate.addListener(function(engineID) {
chrome.test.sendMessage('activated');
});
chrome.inputMethodPrivate.onImeMenuListChanged.addListener(function() {
++list_change_count;
if (list_change_count == 2) {
chrome.test.sendMessage('list_change');
chrome.test.succeed();
}
});
},
function testSetAndUpdateMenuItems() {
var onMenuItemChangeCount = 0;
chrome.inputMethodPrivate.onImeMenuItemsChanged.addListener(
function(engineID, items) {
chrome.test.assertEq('test', engineID);
if (onMenuItemChangeCount == 0) {
compareMenuItems(menuItems, items);
++onMenuItemChangeCount;
}
else {
compareMenuItems(menuItemsUpdate, items);
chrome.test.sendMessage('get_menu_update');
chrome.test.succeed();
}
}
);
chrome.input.ime.setMenuItems({
engineID: 'test',
items: menuItems
});
chrome.input.ime.updateMenuItems({
engineID: 'test',
items: menuItemsUpdate
});
}
]);