Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Moustachauve committed Mar 14, 2023
2 parents 7d7113f + 85dfc03 commit 2137f13
Show file tree
Hide file tree
Showing 51 changed files with 2,648 additions and 76 deletions.
28 changes: 27 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,30 @@
manifest.json
build/*
dist/*
node_modules
node_modules

## User settings
xcuserdata/

## Xcode 8 and earlier
*.xcscmblueprint
*.xccheckout

## VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
25 changes: 22 additions & 3 deletions cookie-editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,26 @@ if (typeof importScripts === 'function') {
browserDetector.getApi().runtime.onMessage.addListener(handleMessage);
browserDetector.getApi().tabs.onUpdated.addListener(onTabsChanged);

if (!browserDetector.isEdge()) {
if (!browserDetector.isSafari()) {
browserDetector.getApi().cookies.onChanged.addListener(onCookiesChanged);
}

isFirefoxAndroid(function(response) {
if (response) {
const popupOptions = {};
popupOptions.popup = '/interface/popup-android/cookie-list.html';
const popupOptions = {
popup: '/interface/popup-android/cookie-list.html'
};
browserDetector.getApi().browserAction.setPopup(popupOptions);
}
});
isSafariIos(function(response) {
if (response) {
const popupOptions = {
popup: '/interface/popup-ios/cookie-list.html'
};
browserDetector.getApi().action.setPopup(popupOptions);
}
});

function handleMessage(request, sender, sendResponse) {
console.log('message received: ' + (request.type || 'unknown'));
Expand Down Expand Up @@ -153,4 +162,14 @@ if (typeof importScripts === 'function') {
});
}

function isSafariIos(callback) {
if (!browserDetector.isSafari()) {
return callback(false);
}

return browserDetector.getApi().runtime.getPlatformInfo().then((info) => {
callback(info.os === 'ios');
});
}

}());
30 changes: 15 additions & 15 deletions interface/devtools/cookie-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,31 +26,31 @@ <h1 class="container">Cookie Editor</h1>

<div class="panel button-bar active" id="button-bar-default">
<div class="panel-section panel-section-footer">
<button class="panel-section-footer-button" id="create-cookie">
<button class="panel-section-footer-button" id="create-cookie" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#plus"></use></svg>
<div class="tooltip" role="tooltip">Add</div>
</div>
</button>
<div class="panel-section-footer-separator"></div>

<button class="panel-section-footer-button danger" id="delete-all-cookies">
<button class="panel-section-footer-button danger" id="delete-all-cookies" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#trash"></use></svg>
<div class="tooltip" role="tooltip">Delete All</div>
</div>
</button>
<div class="panel-section-footer-separator"></div>

<button class="panel-section-footer-button" id="import-cookies">
<button class="panel-section-footer-button" id="import-cookies" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#file-import"></use></svg>
<div class="tooltip" role="tooltip">Import</div>
</div>
</button>
<div class="panel-section-footer-separator"></div>

<button class="panel-section-footer-button" id="export-cookies">
<button class="panel-section-footer-button" id="export-cookies" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#file-export"></use></svg>
<div class="tooltip" role="tooltip">Export</div>
Expand All @@ -61,15 +61,15 @@ <h1 class="container">Cookie Editor</h1>

<div class="panel button-bar" id="button-bar-add">
<div class="panel-section panel-section-footer">
<button class="panel-section-footer-button" id="return-list-add">
<button class="panel-section-footer-button" id="return-list-add" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#arrow-left"></use></svg>
<div class="tooltip" role="tooltip">Cancel</div>
</div>
</button>
<div class="panel-section-footer-separator"></div>

<button class="panel-section-footer-button primary" id="save-create-cookie">
<button class="panel-section-footer-button primary" id="save-create-cookie" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#save"></use></svg>
<div class="tooltip" role="tooltip">Add</div>
Expand All @@ -80,15 +80,15 @@ <h1 class="container">Cookie Editor</h1>

<div class="panel button-bar" id="button-bar-import">
<div class="panel-section panel-section-footer">
<button class="panel-section-footer-button" id="return-list-import">
<button class="panel-section-footer-button" id="return-list-import" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#arrow-left"></use></svg>
<div class="tooltip" role="tooltip">Cancel</div>
</div>
</button>
<div class="panel-section-footer-separator"></div>

<button class="panel-section-footer-button primary" id="save-import-cookie">
<button class="panel-section-footer-button primary" id="save-import-cookie" type="button">
<div>
<svg class="icon"><use href="../sprites/solid.svg#file-import"></use></svg>
<div class="tooltip" role="tooltip">Import</div>
Expand All @@ -100,7 +100,7 @@ <h1 class="container">Cookie Editor</h1>
<div id="notification-container">
<div id="notification">
<span></span>
<button id="notification-dismiss" aria-label="Dismiss Notification">
<button id="notification-dismiss" aria-label="Dismiss Notification" type="button">
<svg class="icon"><use href="../sprites/solid.svg#times"></use></svg>
</button>
</div>
Expand All @@ -122,7 +122,7 @@ <h1 class="container">Cookie Editor</h1>
</svg>
<span class="header-name"></span>
<div class="btns">
<button class="delete" data-tooltip-left="Delete" aria-label="Delete" tabindex="-1">
<button class="delete" data-tooltip-left="Delete" aria-label="Delete" tabindex="-1" type="button">
<svg class="icon">
<use href="../sprites/solid.svg#trash"></use>
</svg>
Expand All @@ -132,12 +132,12 @@ <h1 class="container">Cookie Editor</h1>
<div class="expando" aria-hidden="true" role="region">
<div class="wrapper">
<div class="action-btns">
<button class="delete" data-tooltip="Delete" aria-label="Delete">
<button class="delete" data-tooltip="Delete" aria-label="Delete" type="button">
<svg class="icon">
<use href="../sprites/solid.svg#trash"></use>
</svg>
</button>
<button class="save" data-tooltip="Save" aria-label="Save">
<button class="save" data-tooltip="Save" aria-label="Save" type="submit">
<svg class="icon">
<use href="../sprites/solid.svg#save"></use>
</svg>
Expand All @@ -152,7 +152,7 @@ <h1 class="container">Cookie Editor</h1>
<label class="label-value">Value</label>
<textarea name="value" class="input-value"></textarea>
</div>
<button class="advanced-toggle">
<button class="advanced-toggle" type="button">
Show Advanced
</button>
<div class="advanced-form">
Expand Down Expand Up @@ -236,8 +236,8 @@ <h1 class="container">Cookie Editor</h1>

<template id="tmp-export-options">
<div id="export-menu">
<button id="export-json">Export as JSON</button>
<button id="export-netscape">Export as Netscape</button>
<button id="export-json" type="button">Export as JSON</button>
<button id="export-netscape" type="button">Export as Netscape</button>
</div>
</template>
</body>
Expand Down
22 changes: 19 additions & 3 deletions interface/lib/browserDetector.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,23 @@ function BrowserDetector() {
let namespace = chrome || window.browser || window.chrome;
let browserName;
let doesSupportSameSiteCookie = null;
let isIos = false

if (namespace === chrome || namespace === window.chrome) {
browserName = 'chrome';
}
else if (namespace === window.browser) {
let supportPromises = false;
try {
supportPromises = namespace.runtime.getPlatformInfo() instanceof Promise;
}
catch (e) {
}

if (supportPromises) {
browserName = 'safari';
}
else {
browserName = 'chrome';
}
} else if (namespace === window.browser) {
let supportPromises = false;
try {
supportPromises = namespace.runtime.getPlatformInfo() instanceof Promise;
Expand Down Expand Up @@ -41,6 +53,10 @@ function BrowserDetector() {
return browserName === 'edge';
};

this.isSafari = function () {
return browserName === 'safari';
};

this.supportSameSiteCookie = function () {
if (doesSupportSameSiteCookie !== null) {
return doesSupportSameSiteCookie;
Expand Down
33 changes: 26 additions & 7 deletions interface/lib/genericCookieHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function GenericCookieHandler() {
const browserDetector = new BrowserDetector();

this.getAllCookies = function(callback) {
if (browserDetector.isFirefox()) {
if (browserDetector.isFirefox() && browserDetector.isSafari()) {
browserDetector.getApi().cookies.getAll({
url: this.currentTab.url,
storeId: this.currentTab.cookieStoreId
Expand Down Expand Up @@ -36,20 +36,29 @@ function GenericCookieHandler() {
url: url
};

if (cookie.hostOnly) {
// Bad hack on safari because cookies needs to have the very exact same domain
// to be able to edit it.
if (browserDetector.isSafari() && newCookie.domain) {
newCookie.url = "http://" + newCookie.domain;
}

if (cookie.hostOnly || (browserDetector.isSafari() && !newCookie.domain)) {
newCookie.domain = null;
}

if (browserDetector.supportSameSiteCookie()) {
if (browserDetector.supportSameSiteCookie() && !browserDetector.isSafari()) {
newCookie.sameSite = cookie.sameSite || undefined;

if (newCookie.sameSite == "no_restriction") {
newCookie.secure = true;
}
if (browserDetector.isSafari()) {
newCookie.sameSite = 'explicit';
}
}

if (browserDetector.isFirefox()) {
browserDetector.getApi().cookies.set(newCookie).then(cookie => {
if (browserDetector.isFirefox() || browserDetector.isSafari()) {
browserDetector.getApi().cookies.set(newCookie).then((cookie,a,b,c) => {
if (callback) {
callback(null, cookie);
}
Expand Down Expand Up @@ -78,8 +87,18 @@ function GenericCookieHandler() {
}
};

this.removeCookie = function(name, url, callback) {
if (browserDetector.isFirefox()) {
this.removeCookie = function(name, url, callback, isRecursive = false) {
// Bad hack on safari because cookies needs to have the very exact same domain
// to be able to delete it.
if (browserDetector.isSafari() && !isRecursive) {
this.getAllCookies((cookies) => {
for (let cookie of cookies) {
if (cookie.name === name) {
this.removeCookie(name, "http://" + cookie.domain, callback, true);
}
}
})
} else if (browserDetector.isFirefox() || browserDetector.isSafari()) {
browserDetector.getApi().cookies.remove({
name: name,
url: url,
Expand Down
Loading

0 comments on commit 2137f13

Please sign in to comment.