-
Notifications
You must be signed in to change notification settings - Fork 1
/
event.js
61 lines (50 loc) · 1.88 KB
/
event.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var dictionary = {};
var prefix = 'drive.google.com/viewerng/viewer?url=';
var suffix = '&embedded=true';
chrome.webRequest.onBeforeRequest.addListener(function(details) {
var lastUrl = dictionary[details.tabId];
var result;
dictionary[details.tabId] = details.url;
if(details.url.match(/\.(doc|ppt)x?$/)) {
if(lastUrl == 'http://'+prefix+details.url+suffix ||
lastUrl == 'https://'+prefix+details.url+suffix) {
return {cancel : false};
}
else {
return {redirectUrl: 'https://'+prefix+details.url+suffix};
}
}
else {
return {cancel : false};
}
}, {
urls: ["<all_urls>"], types : ["main_frame"]
}, ['blocking']);
chrome.webNavigation.onCompleted.addListener(function(details){
if(details.url.indexOf(prefix) >= 0 && details.url.indexOf(suffix) >= 0)
{
chrome.tabs.insertCSS(details.tabId, {file: "./updates.css"});
if(details.url.match(/\.pptx?&embedded=true$/))
{
chrome.tabs.insertCSS(details.tabId, {file: "./landscape.css"});
}
else
{
chrome.tabs.insertCSS(details.tabId, {file: "./portrait.css"});
}
chrome.tabs.executeScript(details.tabId, {file: "./jquery.js"});
chrome.tabs.executeScript(details.tabId, {file: "./injection.js"});
}
});
chrome.webRequest.onHeadersReceived.addListener(
function(details) {
//Intercept all headers with BLOB url, and feed it to our js scripts
if(details.url.match(/drive\.google\.com\/viewerng\/img\?/)) {
var url = details.url.substr(0,details.url.length-1);
chrome.tabs.executeScript(details.tabId,
{code: ('var nativeDoc_blob="'+url+'";')});
}
return {responseHeaders: details.responseHeaders};
},
{urls: ["<all_urls>"]},
["blocking", "responseHeaders"]);