Skip to content

Commit 0f02cd1

Browse files
committed
request permissions
1 parent 0557cb8 commit 0f02cd1

File tree

7 files changed

+88
-2
lines changed

7 files changed

+88
-2
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module.exports = {
2020
browser: true,
2121
},
2222
globals: {
23+
chrome: false,
2324
basicContext: false,
2425
require: false,
2526
requireModule: false,

app/controllers/application.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default class ApplicationController extends Controller {
3232
@tracked _navWidthExpanded = 180;
3333
@tracked _navWidthCollapsed = 48;
3434
@tracked navIsCollapsed = false;
35+
@tracked inspectingTabOrigin = null;
3536

3637
get navWidth() {
3738
return this.navIsCollapsed
@@ -53,6 +54,24 @@ export default class ApplicationController extends Controller {
5354
this.mixinDetails = [];
5455
}
5556

57+
get targetTabOrigin() {
58+
if (!this.inspectingTabOrigin) {
59+
void this.requestTargetTabOrigin();
60+
return null;
61+
}
62+
return `${window.location.origin}/request.html?tabOrigin=${this.inspectingTabOrigin}`;
63+
}
64+
65+
async requestTargetTabOrigin() {
66+
// during tests
67+
if (typeof chrome === 'undefined') {
68+
return;
69+
}
70+
const resp = await chrome.devtools.inspectedWindow.eval('window.location');
71+
const origin = resp[0].origin;
72+
this.inspectingTabOrigin = origin;
73+
}
74+
5675
/*
5776
* Called when digging deeper into object stack
5877
* from within the ObjectInspector
@@ -190,4 +209,25 @@ export default class ApplicationController extends Controller {
190209
this.set('mixinDetails', null);
191210
}
192211
}
212+
213+
@action
214+
requestPermissionForAll() {
215+
function onResponse(response) {
216+
if (response) {
217+
console.log('Permission was granted');
218+
} else {
219+
console.log('Permission was refused');
220+
}
221+
return chrome.permissions.getAll();
222+
}
223+
224+
const permissionsToRequest = {
225+
origins: ['<all_urls>'],
226+
};
227+
228+
chrome.permissions.request(permissionsToRequest).then(async (response) => {
229+
const currentPermissions = await onResponse(response);
230+
console.log(`Current permissions:`, currentPermissions);
231+
});
232+
}
193233
}

app/services/adapters/chrome.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export default class Chrome extends WebExtension {
66
@tracked canOpenResource = true;
77

88
openResource(file, line) {
9-
/*global chrome */
109
// For some reason it opens the line after the one specified
1110
chrome.devtools.panels.openResource(file, line - 1);
1211
}

app/services/adapters/web-extension.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* globals chrome */
21
import { computed } from '@ember/object';
32
import { tracked } from '@glimmer/tracking';
43

app/templates/application.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@
8383
<ul>
8484
<li>This is not an Ember application.</li>
8585
<li>You are using an old version of Ember (&lt; rc5).</li>
86+
<li>You did not have set up the addons permissions.
87+
<a target='_blank' rel="noopener noreferrer" href={{this.targetTabOrigin}}>request permissions</a>
88+
</li>
8689
{{#if this.isChrome}}
8790
<li>
8891
You are using the file:// protocol (instead of http://), in which case:
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<html>
2+
<head>
3+
<link rel="stylesheet" href="./panes-3-16-0/assets/ember-inspector.css">
4+
<link rel="stylesheet" href="./panes-3-16-0/assets/vendor.css">
5+
</head>
6+
<body class='theme--light'>
7+
<div class="error-page box-border overflow-auto absolute inset-0 flex text-base13 text-md bg-base02">
8+
<div class="error-page__content box-border relative m-auto px-6 pb-6 rounded bg-base00" style='border: 1px solid orangered'>
9+
<div class="error-page__header overflow-hidden relative flex items-center font-bold text-4xl">
10+
<div class="flex-grow pt-6">
11+
<br />
12+
Request permission to enable ember inspector
13+
<img style='position: absolute; right: 0; top: 0' src='./panes-3-16-0/assets/images/icon48.png'/>
14+
<br />
15+
<br />
16+
</div>
17+
</div>
18+
19+
<div class="error-page__body pb-2">
20+
<button style='padding: 5px' id='request-all'>request permission for all sites</button>
21+
<br />
22+
<br />
23+
<button style='padding: 5px' id='request-one'>request permission for </button>
24+
<br />
25+
<br />
26+
</div>
27+
</div>
28+
</div>
29+
</body>
30+
<script src='./request.js'></script>
31+
</html>

skeletons/web-extension/request.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
document.getElementById('request-all').addEventListener('click', async () => {
2+
await chrome.permissions.request({origins: ['<all_urls>']});
3+
window.close()
4+
})
5+
6+
const url = new URL(window.location);
7+
const tabOrigin = url.searchParams.get('tabOrigin');
8+
document.getElementById('request-one').innerText += ' ' + tabOrigin;
9+
10+
document.getElementById('request-one').addEventListener('click', async () => {
11+
await chrome.permissions.request({origins: [tabOrigin + '/*']});
12+
window.close()
13+
})

0 commit comments

Comments
 (0)