Commit 698fcb87 authored by Christopher Lam's avatar Christopher Lam Committed by Commit Bot

[App Management] Fix permission toggling.

This CL fixes permission toggling which had an erroneous assert, and
adds a regression test.

Bug: 906508
Change-Id: Ie026ac246c48b19290da5784199c6a8d75c71e89
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1502259
Auto-Submit: calamity <calamity@chromium.org>
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarAlan Cutter <alancutter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#638002}
parent c97ed49e
...@@ -66,7 +66,6 @@ Polymer({ ...@@ -66,7 +66,6 @@ Polymer({
* @private * @private
*/ */
getNewPermissionBoolean_: function(app, permissionType) { getNewPermissionBoolean_: function(app, permissionType) {
/** @type {number} */
let newPermissionValue; let newPermissionValue;
switch (app_management.util.getPermission(app, permissionType).value) { switch (app_management.util.getPermission(app, permissionType).value) {
...@@ -80,9 +79,10 @@ Polymer({ ...@@ -80,9 +79,10 @@ Polymer({
assertNotReached(); assertNotReached();
} }
assert(newPermissionValue !== undefined);
return app_management.util.createPermission( return app_management.util.createPermission(
app_management.util.permissionTypeHandle(app, permissionType), app_management.util.permissionTypeHandle(app, permissionType),
PermissionValueType.kBool, assert(newPermissionValue)); PermissionValueType.kBool, newPermissionValue);
}, },
/** /**
...@@ -112,8 +112,9 @@ Polymer({ ...@@ -112,8 +112,9 @@ Polymer({
assertNotReached(); assertNotReached();
} }
assert(newPermissionValue !== undefined);
return app_management.util.createPermission( return app_management.util.createPermission(
app_management.util.permissionTypeHandle(app, permissionType), app_management.util.permissionTypeHandle(app, permissionType),
PermissionValueType.kTriState, assert(newPermissionValue)); PermissionValueType.kTriState, newPermissionValue);
}, },
}); });
...@@ -8,10 +8,9 @@ suite('<app-management-pwa-permission-view>', function() { ...@@ -8,10 +8,9 @@ suite('<app-management-pwa-permission-view>', function() {
let pwaPermissionView; let pwaPermissionView;
let fakeHandler; let fakeHandler;
const TEST_APP_ID = '1'; function getPermissionToggleByType(permissionType) {
return pwaPermissionView.root
function getToggleFromPermissionItem(permissionItemId) { .querySelector('[permission-type=' + permissionType + ']')
return pwaPermissionView.root.getElementById(permissionItemId)
.root.querySelector('app-management-permission-toggle') .root.querySelector('app-management-permission-toggle')
.root.querySelector('cr-toggle'); .root.querySelector('cr-toggle');
} }
...@@ -21,8 +20,8 @@ suite('<app-management-pwa-permission-view>', function() { ...@@ -21,8 +20,8 @@ suite('<app-management-pwa-permission-view>', function() {
pwaPermissionView.app_, permissionType); pwaPermissionView.app_, permissionType);
} }
async function clickToggle(permissionItemId) { async function clickToggle(permissionType) {
getToggleFromPermissionItem(permissionItemId).click(); getPermissionToggleByType(permissionType).click();
await fakeHandler.$.flushForTesting(); await fakeHandler.$.flushForTesting();
} }
...@@ -31,9 +30,10 @@ suite('<app-management-pwa-permission-view>', function() { ...@@ -31,9 +30,10 @@ suite('<app-management-pwa-permission-view>', function() {
replaceStore(); replaceStore();
// Add an app, and make it the currently selected app. // Add an app, and make it the currently selected app.
await fakeHandler.addApp(TEST_APP_ID); const app = await fakeHandler.addApp();
app_management.Store.getInstance().dispatch( app_management.Store.getInstance().dispatch(
app_management.actions.changePage(PageType.DETAIL, TEST_APP_ID)); app_management.actions.changePage(PageType.DETAIL, app.id));
pwaPermissionView = pwaPermissionView =
document.createElement('app-management-pwa-permission-view'); document.createElement('app-management-pwa-permission-view');
replaceBody(pwaPermissionView); replaceBody(pwaPermissionView);
...@@ -45,22 +45,25 @@ suite('<app-management-pwa-permission-view>', function() { ...@@ -45,22 +45,25 @@ suite('<app-management-pwa-permission-view>', function() {
pwaPermissionView.app_.id); pwaPermissionView.app_.id);
}); });
test( test('toggle permissions', async function() {
'Clicking the permission toggle changes the permission of the app', let checkToggle = async function(permissionType) {
async function() {
let checkToggle = async function(permissionType, permissionId) {
assertTrue(getPermissionBoolByType(permissionType)); assertTrue(getPermissionBoolByType(permissionType));
assertTrue(getToggleFromPermissionItem(permissionId).checked); assertTrue(getPermissionToggleByType(permissionType).checked);
await clickToggle(permissionId);
// Toggle off.
await clickToggle(permissionType);
assertFalse(getPermissionBoolByType(permissionType)); assertFalse(getPermissionBoolByType(permissionType));
assertFalse(getToggleFromPermissionItem(permissionId).checked); assertFalse(getPermissionToggleByType(permissionType).checked);
// Toggle on.
await clickToggle(permissionType);
assertTrue(getPermissionBoolByType(permissionType));
assertTrue(getPermissionToggleByType(permissionType).checked);
}; };
await checkToggle( await checkToggle('CONTENT_SETTINGS_TYPE_NOTIFICATIONS');
'CONTENT_SETTINGS_TYPE_NOTIFICATIONS', 'notifications'); await checkToggle('CONTENT_SETTINGS_TYPE_GEOLOCATION');
await checkToggle('CONTENT_SETTINGS_TYPE_GEOLOCATION', 'location'); await checkToggle('CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA');
await checkToggle('CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA', 'camera'); await checkToggle('CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC');
await checkToggle(
'CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC', 'microphone');
}); });
}); });
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