Created
March 15, 2016 16:02
-
-
Save kumar303/e26a44d4f769443a3b68 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/devtools/client/aboutdebugging/components/addons-tab.js b/devtools/client/aboutdebugging/components/addons-tab.js | |
--- a/devtools/client/aboutdebugging/components/addons-tab.js | |
+++ b/devtools/client/aboutdebugging/components/addons-tab.js | |
@@ -78,17 +78,18 @@ module.exports = createClass({ | |
updateAddonsList() { | |
AddonManager.getAllAddons(addons => { | |
let extensions = addons.filter(addon => addon.isDebuggable).map(addon => { | |
return { | |
name: addon.name, | |
icon: addon.iconURL || ExtensionIcon, | |
type: addon.type, | |
- addonID: addon.id | |
+ addonID: addon.id, | |
+ isRestartless: addon.isRestartless | |
}; | |
}); | |
this.setState({ extensions }); | |
}); | |
}, | |
/** | |
* Mandatory callback as AddonManager listener. | |
diff --git a/devtools/client/aboutdebugging/components/target.js b/devtools/client/aboutdebugging/components/target.js | |
--- a/devtools/client/aboutdebugging/components/target.js | |
+++ b/devtools/client/aboutdebugging/components/target.js | |
@@ -11,30 +11,33 @@ loader.lazyRequireGetter(this, "TargetFa | |
loader.lazyRequireGetter(this, "gDevTools", | |
"devtools/client/framework/devtools", true); | |
loader.lazyRequireGetter(this, "Toolbox", | |
"devtools/client/framework/toolbox", true); | |
loader.lazyImporter(this, "BrowserToolboxProcess", | |
"resource://devtools/client/framework/ToolboxProcess.jsm"); | |
+const { AddonManager } = require("resource://gre/modules/AddonManager.jsm"); | |
const Services = require("Services"); | |
const { createClass, DOM: dom } = | |
require("devtools/client/shared/vendor/react"); | |
const Strings = Services.strings.createBundle( | |
"chrome://devtools/locale/aboutdebugging.properties"); | |
module.exports = createClass({ | |
displayName: "Target", | |
render() { | |
let { target, debugDisabled } = this.props; | |
let isServiceWorker = (target.type === "serviceworker"); | |
let isRunning = (!isServiceWorker || target.workerActor); | |
+ let isReloadable = (target.type === "extension" && | |
+ target.isRestartless); | |
return dom.div({ className: "target" }, | |
dom.img({ | |
className: "target-icon", | |
role: "presentation", | |
src: target.icon }), | |
dom.div({ className: "target-details" }, | |
dom.div({ className: "target-name" }, target.name) | |
), | |
@@ -50,16 +53,22 @@ module.exports = createClass({ | |
className: "debug-button", | |
onClick: this.debug, | |
disabled: debugDisabled, | |
}, Strings.GetStringFromName("debug")) : | |
dom.button({ | |
className: "start-button", | |
onClick: this.start | |
}, Strings.GetStringFromName("start")) | |
+ ), | |
+ (isReloadable ? | |
+ dom.button({ | |
+ onClick: this.reloadExtension | |
+ }, Strings.GetStringFromName("reload")) : | |
+ null | |
) | |
); | |
}, | |
debug() { | |
let { target } = this.props; | |
switch (target.type) { | |
case "extension": | |
@@ -87,16 +96,22 @@ module.exports = createClass({ | |
if (target.workerActor) { | |
client.request({ | |
to: target.workerActor, | |
type: "push" | |
}); | |
} | |
}, | |
+ reloadExtension() { | |
+ AddonManager.getAddonByID(this.props.target.addonID, addon => { | |
+ addon.reload(); | |
+ }); | |
+ }, | |
+ | |
start() { | |
let { client, target } = this.props; | |
if (target.type === "serviceworker" && !target.workerActor) { | |
client.request({ | |
to: target.registrationActor, | |
type: "start" | |
}); | |
} | |
diff --git a/devtools/client/locales/en-US/aboutdebugging.properties b/devtools/client/locales/en-US/aboutdebugging.properties | |
--- a/devtools/client/locales/en-US/aboutdebugging.properties | |
+++ b/devtools/client/locales/en-US/aboutdebugging.properties | |
@@ -8,16 +8,17 @@ start = Start | |
addons = Add-ons | |
addonDebugging.label = Enable add-on debugging | |
addonDebugging.tooltip = Turning this on will allow you to debug add-ons and various other parts of the browser chrome | |
addonDebugging.moreInfo = more info | |
loadTemporaryAddon = Load Temporary Add-on | |
extensions = Extensions | |
selectAddonFromFile2 = Select Manifest File or Package (.xpi) | |
+reload = Reload | |
workers = Workers | |
serviceWorkers = Service Workers | |
sharedWorkers = Shared Workers | |
otherWorkers = Other Workers | |
nothing = Nothing yet. | |
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm | |
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm | |
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm | |
@@ -6983,16 +6983,21 @@ AddonWrapper.prototype = { | |
if(this.isActive && addon.icon64URL){ | |
icons[64] = addon.icon64URL; | |
} | |
Object.freeze(icons); | |
return icons; | |
}, | |
+ get isRestartless() { | |
+ let addon = addonFor(this); | |
+ return addon.bootstrap; | |
+ }, | |
+ | |
get screenshots() { | |
let addon = addonFor(this); | |
let repositoryAddon = addon._repositoryAddon; | |
if (repositoryAddon && ("screenshots" in repositoryAddon)) { | |
let repositoryScreenshots = repositoryAddon.screenshots; | |
if (repositoryScreenshots && repositoryScreenshots.length > 0) | |
return repositoryScreenshots; | |
} | |
@@ -7269,16 +7274,22 @@ AddonWrapper.prototype = { | |
addon._hasResourceCache.set(aPath, false); | |
return false; | |
} | |
finally { | |
zipReader.close(); | |
} | |
}, | |
+ reload: function() { | |
+ this.userDisabled = true; | |
+ flushStartupCache(); | |
+ this.userDisabled = false; | |
+ }, | |
+ | |
/** | |
* Returns a URI to the selected resource or to the add-on bundle if aPath | |
* is null. URIs to the bundle will always be file: URIs. URIs to resources | |
* will be file: URIs if the add-on is unpacked or jar: URIs if the add-on is | |
* still an XPI file. | |
* | |
* @param aPath | |
* The path in the add-on to get the URI for or null to get a URI to |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment