Skip to content

Loading…

"inline-script" prefix is no longer required since a while now #1340

Merged
merged 3 commits into from

2 participants

@gorhill

No description provided.

@chrisaljoudi chrisaljoudi merged commit f44331b into chrisaljoudi:master

1 check passed

Details continuous-integration/travis-ci/pr The Travis CI build passed
@chrisaljoudi

Merged — thanks for the formatting tweaks, too!

@gorhill

thanks for the formatting tweaks

I can't say that I follow perfectly the rule all the time, but in general I try to keep the code not go beyond the 80th column.

@chrisaljoudi

@gorhill Nice; sounds like a good general rule! Seems to be similar to/consistent with the practice in general typesetting and web typography.


There's probably a way to get vim to show the 80ch column as a "line", I'm guessing. Will look into it.

Thanks. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 30, 2015
  1. @gorhill
  2. @gorhill

    this fixes #111

    gorhill committed
  3. @gorhill

    this fixes #101

    gorhill committed
This page is out of date. Refresh to see the latest.
Showing with 80 additions and 37 deletions.
  1. +71 −32 platform/chromium/vapi-background.js
  2. +9 −5 src/js/traffic.js
View
103 platform/chromium/vapi-background.js
@@ -49,11 +49,10 @@ vAPI.app = {
/******************************************************************************/
-if (!chrome.runtime) {
+if ( !chrome.runtime ) {
// Chrome 20-21
chrome.runtime = chrome.extension;
-}
-else if(!chrome.runtime.onMessage) {
+} else if ( !chrome.runtime.onMessage ) {
// Chrome 22-25
chrome.runtime.onMessage = chrome.extension.onMessage;
chrome.runtime.sendMessage = chrome.extension.sendMessage;
@@ -75,6 +74,21 @@ vAPI.storage = chrome.storage.local;
/******************************************************************************/
+// https://github.com/gorhill/uBlock/issues/101
+// chrome API expects tab id to be a number, not a string.
+
+var toChromiumTabId = function(tabId) {
+ if ( typeof tabId === 'string' ) {
+ tabId = parseInt(tabId, 10);
+ }
+ if ( typeof tabId !== 'number' || isNaN(tabId) || tabId === -1 ) {
+ return 0;
+ }
+ return tabId;
+};
+
+/******************************************************************************/
+
vAPI.tabs = {};
/******************************************************************************/
@@ -204,7 +218,6 @@ vAPI.tabs.registerListeners = function() {
if ( typeof this.onClosed === 'function' ) {
chrome.tabs.onRemoved.addListener(this.onClosed);
}
-
};
/******************************************************************************/
@@ -218,11 +231,10 @@ vAPI.tabs.get = function(tabId, callback) {
// Caller must be prepared to deal with nil tab value
callback(tab);
};
+
if ( tabId !== null ) {
- if ( typeof tabId === 'string' ) {
- tabId = parseInt(tabId, 10);
- }
- if ( typeof tabId !== 'number' || isNaN(tabId) ) {
+ tabId = toChromiumTabId(tabId);
+ if ( tabId === 0 ) {
onTabReady(null);
}
else {
@@ -230,6 +242,7 @@ vAPI.tabs.get = function(tabId, callback) {
}
return;
}
+
var onTabReceived = function(tabs) {
// https://code.google.com/p/chromium/issues/detail?id=410868#c8
if ( chrome.runtime.lastError ) {
@@ -289,7 +302,7 @@ vAPI.tabs.open = function(details) {
}
// update doesn't accept index, must use move
- chrome.tabs.update(parseInt(details.tabId, 10), _details, function(tab) {
+ chrome.tabs.update(toChromiumTabId(details.tabId), _details, function(tab) {
// if the tab doesn't exist
if ( vAPI.lastError() ) {
chrome.tabs.create(_details, focusWindow);
@@ -337,6 +350,11 @@ vAPI.tabs.open = function(details) {
// Replace the URL of a tab. Noop if the tab does not exist.
vAPI.tabs.replace = function(tabId, url) {
+ tabId = toChromiumTabId(tabId);
+ if ( tabId === 0 ) {
+ return;
+ }
+
var targetURL = url;
// extension pages
@@ -344,17 +362,10 @@ vAPI.tabs.replace = function(tabId, url) {
targetURL = vAPI.getURL(targetURL);
}
- if ( typeof tabId !== 'number' ) {
- tabId = parseInt(tabId, 10);
- if ( isNaN(tabId) ) {
- return;
- }
- }
-
chrome.tabs.update(tabId, { url: targetURL }, function() {
- // this prevent console error
+ // https://code.google.com/p/chromium/issues/detail?id=410868#c8
if ( chrome.runtime.lastError ) {
- return;
+ /* noop */
}
});
};
@@ -362,20 +373,36 @@ vAPI.tabs.replace = function(tabId, url) {
/******************************************************************************/
vAPI.tabs.remove = function(tabId) {
+ tabId = toChromiumTabId(tabId);
+ if ( tabId === 0 ) {
+ return;
+ }
+
var onTabRemoved = function() {
+ // https://code.google.com/p/chromium/issues/detail?id=410868#c8
if ( vAPI.lastError() ) {
+ /* noop */
}
};
- chrome.tabs.remove(parseInt(tabId, 10), onTabRemoved);
+ chrome.tabs.remove(tabId, onTabRemoved);
};
/******************************************************************************/
vAPI.tabs.reload = function(tabId /*, flags*/) {
- if ( typeof tabId === 'string' ) {
- tabId = parseInt(tabId, 10);
+ tabId = toChromiumTabId(tabId);
+ if ( tabId === 0 ) {
+ return;
}
- chrome.tabs.reload(tabId);
+
+ var onReloaded = function() {
+ // https://code.google.com/p/chromium/issues/detail?id=410868#c8
+ if ( chrome.runtime.lastError ) {
+ /* noop */
+ }
+ };
+
+ chrome.tabs.reload(tabId, onReloaded);
};
/******************************************************************************/
@@ -384,14 +411,14 @@ vAPI.tabs.injectScript = function(tabId, details, callback) {
var onScriptExecuted = function() {
// https://code.google.com/p/chromium/issues/detail?id=410868#c8
if ( chrome.runtime.lastError ) {
+ /* noop */
}
if ( typeof callback === 'function' ) {
callback();
}
};
if ( tabId ) {
- tabId = parseInt(tabId, 10);
- chrome.tabs.executeScript(tabId, details, onScriptExecuted);
+ chrome.tabs.executeScript(toChromiumTabId(tabId), details, onScriptExecuted);
} else {
chrome.tabs.executeScript(details, onScriptExecuted);
}
@@ -407,7 +434,11 @@ vAPI.tabs.injectScript = function(tabId, details, callback) {
// anymore, so this ensures it does still exist.
vAPI.setIcon = function(tabId, iconStatus, badge) {
- tabId = parseInt(tabId, 10);
+ tabId = toChromiumTabId(tabId);
+ if ( tabId === 0 ) {
+ return;
+ }
+
var onIconReady = function() {
if ( vAPI.lastError() ) {
return;
@@ -731,18 +762,26 @@ vAPI.onLoadAllCompleted = function() {
}
};
- var iconPaths = { '19': 'img/browsericons/icon19-off.png',
- '38': 'img/browsericons/icon38-off.png' };
+ var iconPaths = {
+ '19': 'img/browsericons/icon19-off.png',
+ '38': 'img/browsericons/icon38-off.png'
+ };
+
try {
- chrome.browserAction.setIcon({ path: iconPaths }); // Hello? Is this a recent version of Chrome?
+ // Hello? Is this a recent version of Chrome?
+ chrome.browserAction.setIcon({ path: iconPaths });
}
catch(e) {
- chrome.browserAction._setIcon = chrome.browserAction.setIcon; // Nope; looks like older than v23
- chrome.browserAction.setIcon = function(x, clbk){ // Shim
+ // Nope; looks like older than v23
+ chrome.browserAction._setIcon = chrome.browserAction.setIcon;
+ // Shim
+ chrome.browserAction.setIcon = function(x, clbk) {
this._setIcon({path: x.path[19], tabId: x.tabId}, clbk);
};
- chrome.browserAction.setIcon({ path: iconPaths }); /* maybe this time... I'll win! */
- };
+ // maybe this time... I'll win!
+ chrome.browserAction.setIcon({ path: iconPaths });
+ }
+
chrome.tabs.query({ url: 'http://*/*' }, bindToTabs);
chrome.tabs.query({ url: 'https://*/*' }, bindToTabs);
};
View
14 src/js/traffic.js
@@ -267,7 +267,7 @@ var onHeadersReceived = function(details) {
// Frame id of frame request is the their own id, while the request is made
// in the context of the parent.
var context = pageStore.createContextFromFrameId(details.parentFrameId);
- context.requestURL = details.url + '{inline-script}';
+ context.requestURL = details.url;
context.requestHostname = details.hostname;
context.requestType = 'inline-script';
@@ -300,8 +300,12 @@ var onRootFrameHeadersReceived = function(details) {
var µb = µBlock;
// Check if the main_frame is a download
- // ...
- if ( headerValue(details.responseHeaders, 'content-disposition').lastIndexOf('attachment', 0) === 0 ) {
+ // https://github.com/gorhill/uBlock/issues/111
+ // We will assume that whatever root document is of type
+ // 'application/x-[...]' is a download operation.
+ // I confirmed this also work with original issue:
+ // https://github.com/chrisaljoudi/uBlock/issues/516
+ if ( headerValue(details.responseHeaders, 'content-type').lastIndexOf('application/x-', 0) === 0 ) {
µb.tabContextManager.unpush(tabId, requestURL);
} else {
µb.tabContextManager.push(tabId, requestURL);
@@ -314,11 +318,11 @@ var onRootFrameHeadersReceived = function(details) {
}
var context = pageStore.createContextFromPage();
- context.requestURL = requestURL + '{inline-script}';
+ context.requestURL = requestURL;
context.requestHostname = requestHostname;
context.requestType = 'inline-script';
- var result = pageStore.filterRequest(context);
+ var result = pageStore.filterRequestNoCache(context);
pageStore.logRequest(context, result);
µb.logger.writeOne(tabId, context, result);
Something went wrong with that request. Please try again.