Skip to content

Commit

Permalink
#40 - Finish SettingList component
Browse files Browse the repository at this point in the history
  • Loading branch information
Manvel committed Oct 24, 2019
1 parent fb6a934 commit c4b0f45
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 49 deletions.
54 changes: 22 additions & 32 deletions src/js/ui/components/settingList.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const {Elem, getMsg, Elems} = require("../utils");
const {additionalPermission, getStorage, setStorage} = require("../../common");
const {additionalPermission} = require("../../common");

/**
* Add setting list item
Expand Down Expand Up @@ -72,12 +72,12 @@ async function addSettingItem(parent, dataObj, type)
}
case "storage":
{
const state = await _getStorage(accessor);
const state = await getSettingListData(accessor);
_updateSettingButton(pmToggle, state === true);
pmToggle.addEventListener("change", async() =>
{
const currentState = await _getStorage(accessor);
await _setStorage(accessor, !currentState);
const currentState = await getSettingListData(accessor);
await setSettingListData(accessor, !currentState);
}, false);
break;
}
Expand All @@ -89,9 +89,9 @@ async function addSettingItem(parent, dataObj, type)
pmToggle.addEventListener("click", async() =>
{
if (await browser.permissions.contains(additionalPermission))
chrome.permissions.remove(additionalPermission);
browser.permissions.remove(additionalPermission);
else
chrome.permissions.request(additionalPermission);
browser.permissions.request(additionalPermission);
}, false);

browser.permissions.onAdded.addListener(() =>
Expand All @@ -107,7 +107,7 @@ async function addSettingItem(parent, dataObj, type)
}
}

async function _setStorage(name, value)
async function setSettingListData(name, value)
{
const data = await browser.storage.local.get("settingList");
if (!data.settingList)
Expand All @@ -116,7 +116,7 @@ async function _setStorage(name, value)
await browser.storage.local.set(data);
}

async function _getStorage(name)
async function getSettingListData(name)
{
const data = await browser.storage.local.get("settingList");
const settingList = data["settingList"];
Expand All @@ -125,27 +125,16 @@ async function _getStorage(name)
return settingList[name];
}

function checkSettingState(accessor, callback)
async function resetSettingListData(settingNames)
{
getStorage("settingList", (data) =>
if (!Array.isArray(settingNames))
{
if (data.settingList)
callback(data.settingList[accessor]);
else
callback(false);
});
}

function turnSwitchesOff(accessors, callback)
{
getStorage("settingList", (data) =>
await setSettingListData(settingNames, false);
return;
}
settingNames.forEach(async(settingName) =>
{
accessors.forEach((accessor) =>
{
if (data.settingList[accessor])
data.settingList[accessor] = false;
});
setStorage(data, callback);
await setSettingListData(settingName, false);
});
}

Expand All @@ -164,12 +153,12 @@ function _updateSettingButton(setting, state)
}
}

chrome.storage.onChanged.addListener((change) =>
browser.storage.onChanged.addListener((data) =>
{
if ("settingList" in change)
if ("settingList" in data)
{
var newValue = change.settingList.newValue;
for (var accessor in newValue)
const {newValue} = data.settingList;
for (const accessor in newValue)
_updateSettingButton(accessor, newValue[accessor]);
}
});
Expand All @@ -194,7 +183,7 @@ class Listener
{
if (!this.settingList[settingName])
this.settingList[settingName] = {};
this.settingList[settingName].value = await _getStorage(settingName);
this.settingList[settingName].value = await getSettingListData(settingName);
this.settingList[settingName].callback = callback;
}

Expand All @@ -215,4 +204,5 @@ class Listener
}
}

module.exports = {addSettingItem, checkSettingState, turnSwitchesOff, Listener};
module.exports = {addSettingItem, getSettingListData, resetSettingListData,
Listener};
17 changes: 7 additions & 10 deletions src/js/ui/tab_cookies.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const {getParentData, Elem, getMsg, createBasicSettingObj} = require("./utils");
const {registerActionListener} = require("./actionListener");
const {getStorage, setStorage, deleteCookies, additionalPermission} = require("../common");
const permittedUrls = additionalPermission.origins[0];
const {addSettingItem, checkSettingState, Listener} = require("./components/settingList");
const {addSettingItem, getSettingListData, Listener} = require("./components/settingList");
const {TableList} = require("./components/tableList");

(function()
Expand Down Expand Up @@ -91,19 +91,16 @@ const {TableList} = require("./components/tableList");
registerActionListener(Elem("#dialog-content-cookie-delete-all"), onCookiesAction);
}, false);

function permissionChange(granted)
async function permissionChange(granted)
{
disableControls(!granted);
if (granted)
{
checkSettingState(activeTabCookieId, function(active)
{
// Avoide runing populateDomainList() twice
if (active)
updateFilterToActiveDomain();
else
populateDomainList();
});
const state = await getSettingListData(activeTabCookieId);
if (state)
updateFilterToActiveDomain();
else
populateDomainList();
}
}

Expand Down
14 changes: 7 additions & 7 deletions src/js/ui/tab_network.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const {getParentData, Elem, getMsg, cloneObj, createBasicSettingObj} = require("
const {registerActionListener} = require("./actionListener");
const {additionalPermission, addRequestListener, removeRequestListener,
updateRequestObj, addBlockAgentListener, removeBlockAgentListener} = require("../common");
const {addSettingItem, turnSwitchesOff, Listener} = require("./components/settingList");
const {addSettingItem, resetSettingListData, Listener} = require("./components/settingList");
const {TableList} = require("./components/tableList");

(function()
Expand Down Expand Up @@ -82,7 +82,7 @@ const {TableList} = require("./components/tableList");
case "blockUserAgent":
if (isActive)
{
chrome.permissions.contains(additionalPermission, function(result)
chrome.permissions.contains(additionalPermission, async(result) =>
{
if (result)
{
Expand All @@ -91,7 +91,7 @@ const {TableList} = require("./components/tableList");
else
{
alert(getMsg(permissionNotificationMsgId));
turnSwitchesOff([settingName]);
await resetSettingListData(settingName);
}
});
}
Expand All @@ -103,14 +103,14 @@ const {TableList} = require("./components/tableList");
case "collectHeaders":
if (isActive)
{
chrome.permissions.contains(additionalPermission, function(result)
chrome.permissions.contains(additionalPermission, async(result) =>
{
if (result)
addRequestListener(onSendHeaders, onHeadersReceived);
else
{
alert(getMsg(permissionNotificationMsgId));
turnSwitchesOff([settingName]);
await resetSettingListData(settingName);
}
});
}
Expand All @@ -122,9 +122,9 @@ const {TableList} = require("./components/tableList");
}
}

chrome.permissions.onRemoved.addListener(function(result)
chrome.permissions.onRemoved.addListener(async(result) =>
{
turnSwitchesOff([blockUserAgentId, collectHeadersId]);
await resetSettingListData([blockUserAgentId, collectHeadersId]);
removeBlockAgentListener();
removeRequestListener(onSendHeaders, onHeadersReceived);
});
Expand Down
1 change: 1 addition & 0 deletions test/puppeteer.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ describe("Testing Privacy Manager extension", () =>
it("Clicking activeTabCookies should set activeTabCookies settingList and set current URL as search domain", async() =>
{
const handle = await getHandle("activeTabCookies");
assert.equal(await getSearchDomainValue(), "");
await clickToggle(handle);
await page.waitFor(10);
assert.equal(await getSettingListData("activeTabCookies"), true);
Expand Down

0 comments on commit c4b0f45

Please sign in to comment.