diff --git a/toolkit/mozapps/downloads/content/overrideHandler.js b/toolkit/mozapps/downloads/content/overrideHandler.js deleted file mode 100755 index cb406403fb8..00000000000 --- a/toolkit/mozapps/downloads/content/overrideHandler.js +++ /dev/null @@ -1,432 +0,0 @@ -# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is Mozilla.org Code. -# -# The Initial Developer of the Original Code is -# Doron Rosenberg. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -/** - * Datasource initialization - **/ - -var gRDF = Components.classes["@mozilla.org/rdf/rdf-service;1"] - .getService(Components.interfaces.nsIRDFService); - -/** - * Handler Override class - **/ -function HandlerOverride(aURI) -{ - this.URI = aURI; - this.mUpdateMode = false; -} - -HandlerOverride.prototype = { - // general information - get mimeType() - { - return getLiteralForContentType(this.URI, "value"); - }, - - set mimeType(aMIMETypeString) - { - if (!this.mUpdateMode) - assertMIMEStuff(MIME_URI(aMIMETypeString), "value", aMIMETypeString.toLowerCase()); - else - changeMIMEStuff(MIME_URI(aMIMETypeString), "value", aMIMETypeString.toLowerCase()); - }, - - get description() - { - return getLiteralForContentType(this.URI, "description"); - }, - - set description(aDescriptionString) - { - if (!this.mUpdateMode) - assertMIMEStuff(MIME_URI(this.mimeType), "description", aDescriptionString); - else - changeMIMEStuff(MIME_URI(this.mimeType), "description", aDescriptionString); - }, - - get isEditable() - { - return getLiteralForContentType(this.URI, "editable"); - }, - - set isEditable(aIsEditableString) - { - if (!this.mUpdateMode) - assertMIMEStuff(MIME_URI(this.mimeType), "editable", aIsEditableString); - else - changeMIMEStuff(MIME_URI(this.mimeType), "editable", aIsEditableString); - }, - - get extensions() - { - var extensionResource = gRDF.GetResource(NC_RDF("fileExtensions")); - var contentTypeResource = gRDF.GetResource(MIME_URI(this.mimeType)); - var extensionTargets = gDS.GetTargets(contentTypeResource, extensionResource, true); - var extString = ""; - if (extensionTargets) { - extensionTargets = extensionTargets.QueryInterface(Components.interfaces.nsISimpleEnumerator); - while (extensionTargets.hasMoreElements()) { - var currentExtension = extensionTargets.getNext(); - if (currentExtension) { - currentExtension = currentExtension.QueryInterface(Components.interfaces.nsIRDFLiteral); - extString += currentExtension.Value.toLowerCase() + " "; - } - } - } - return extString; - }, - - addExtension: function (aExtensionString) - { - assertMIMEStuff(MIME_URI(this.mimeType), "fileExtensions", aExtensionString.toLowerCase()); - }, - - removeExtension: function (aExtensionString) - { - unassertMIMEStuff(MIME_URI(this.mimeType), "fileExtensions", aExtensionString.toLowerCase()); - }, - - // content handling - get saveToDisk() - { - return getHandlerInfoForType(this.URI, "saveToDisk"); - }, - - set saveToDisk(aSavedToDisk) - { - var handlerSource = gRDF.GetResource(HANDLER_URI(this.mimeType)); - var handlerProperty = gRDF.GetResource(NC_RDF("saveToDisk")); - var trueLiteral = gRDF.GetLiteral("true"); - var hasSaveToDisk = gDS.HasAssertion(handlerSource, handlerProperty, trueLiteral, true); - if (!hasSaveToDisk) { - var falseLiteral = gRDF.GetLiteral("false"); - hasSaveToDisk = gDS.HasAssertion(handlerSource, handlerProperty, falseLiteral, true); - } - if (!this.mUpdateMode || !hasSaveToDisk) - assertMIMEStuff(HANDLER_URI(this.mimeType), "saveToDisk", aSavedToDisk); - else - changeMIMEStuff(HANDLER_URI(this.mimeType), "saveToDisk", aSavedToDisk); - this.setHandlerProcedure("handleInternal", "false"); - }, - - get handleInternal() - { - return getHandlerInfoForType(this.URI, "handleInternal"); - }, - - set handleInternal(aHandledInternally) - { - var handlerSource = gRDF.GetResource(HANDLER_URI(this.mimeType)); - var handlerProperty = gRDF.GetResource(NC_RDF("handleInternal")); - var trueLiteral = gRDF.GetLiteral("true"); - var hasHandleInternal = gDS.HasAssertion(handlerSource, handlerProperty, trueLiteral, true); - if (!hasHandleInternal) { - var falseLiteral = gRDF.GetLiteral("false"); - hasHandleInternal = gDS.HasAssertion(handlerSource, handlerProperty, falseLiteral, true); - } - if (!this.mUpdateMode || !hasHandleInternal) - assertMIMEStuff(HANDLER_URI(this.mimeType), "handleInternal", aHandledInternally); - else - changeMIMEStuff(HANDLER_URI(this.mimeType), "handleInternal", aHandledInternally); - this.setHandlerProcedure("saveToDisk", "false"); - }, - - setHandlerProcedure: function (aHandlerProcedure, aValue) - { - var handlerSource = gRDF.GetResource(HANDLER_URI(this.mimeType)); - var handlerProperty = gRDF.GetResource(NC_RDF(aHandlerProcedure)); - var oppositeValue = aValue == "false" ? "true" : "false"; - var trueLiteral = gRDF.GetLiteral(oppositeValue); - var hasCounterpart = gDS.HasAssertion(handlerSource, handlerProperty, trueLiteral, true); - if (hasCounterpart) { - var falseLiteral = gRDF.GetLiteral(aValue); - gDS.Change(handlerSource, handlerProperty, trueLiteral, falseLiteral); - } - }, - - get alwaysAsk() - { - return getHandlerInfoForType(this.URI, "alwaysAsk"); - }, - - set alwaysAsk(aAlwaysAsk) - { - if (!this.mUpdateMode) - assertMIMEStuff(HANDLER_URI(this.mimeType), "alwaysAsk", aAlwaysAsk); - else - changeMIMEStuff(HANDLER_URI(this.mimeType), "alwaysAsk", aAlwaysAsk); - }, - - // helper application - get appDisplayName() - { - return getHelperAppInfoForType(this.URI, "prettyName"); - }, - - set appDisplayName(aDisplayName) - { - if (!this.mUpdateMode) - assertMIMEStuff(APP_URI(this.mimeType), "prettyName", aDisplayName); - else - changeMIMEStuff(APP_URI(this.mimeType), "prettyName", aDisplayName); - }, - - get appPath() - { - return getHelperAppInfoForType(this.URI, "path"); - }, - - set appPath(aAppPath) - { - if (!this.mUpdateMode) - assertMIMEStuff(APP_URI(this.mimeType), "path", aAppPath); - else - changeMIMEStuff(APP_URI(this.mimeType), "path", aAppPath); - }, - - /** - * After setting the various properties on this override, we need to - * build the links between the mime type resource, the handler for that - * resource, and the helper app (if any) associated with the resource. - * We also need to add this mime type to the RDF seq (list) of types. - **/ - buildLinks: function() - { - // assert the handler resource - var mimeSource = gRDF.GetResource(MIME_URI(this.mimeType)); - var handlerProperty = gRDF.GetResource(NC_RDF("handlerProp")); - var handlerResource = gRDF.GetResource(HANDLER_URI(this.mimeType)); - gDS.Assert(mimeSource, handlerProperty, handlerResource, true); - // assert the helper app resource - var helperAppProperty = gRDF.GetResource(NC_RDF("externalApplication")); - var helperAppResource = gRDF.GetResource(APP_URI(this.mimeType)); - gDS.Assert(handlerResource, helperAppProperty, helperAppResource, true); - // add the mime type to the MIME types seq - var container = Components.classes["@mozilla.org/rdf/container;1"].createInstance(); - if (container) { - container = container.QueryInterface(Components.interfaces.nsIRDFContainer); - if (container) { - var containerRes = gRDF.GetResource("urn:mimetypes:root"); - container.Init(gDS, containerRes); - var element = gRDF.GetResource(MIME_URI(this.mimeType)); - if (container.IndexOf(element) == -1) - container.AppendElement(element); - } - } - } - -}; - -/** - * Utility functions for building URIs easily - **/ -function NC_RDF(aProperty) -{ - return "http://home.netscape.com/NC-rdf#" + aProperty; -} - -function HANDLER_URI(aHandler) -{ - return "urn:mimetype:handler:" + aHandler; -} - -function APP_URI(aType) -{ - return "urn:mimetype:externalApplication:" + aType; -} - -function MIME_URI(aType) -{ - return "urn:mimetype:" + aType; -} - -/** - * Utility functions for reading data from the RDF datasource - **/ -function getLiteralForContentType(aURI, aProperty) -{ - var contentTypeResource = gRDF.GetResource(aURI); - var propertyResource = gRDF.GetResource(NC_RDF(aProperty)); - return getLiteral(contentTypeResource, propertyResource); -} - -function getLiteral(aSource, aProperty) -{ - var node = gDS.GetTarget(aSource, aProperty, true); - if (node) { - node = node.QueryInterface(Components.interfaces.nsIRDFLiteral); - return node.Value; - } - return ""; -} - -function getHandlerInfoForType(aURI, aPropertyString) -{ - // get current selected type - var handler = HANDLER_URI(getLiteralForContentType(aURI, "value")); - var source = gRDF.GetResource(handler); - var property = gRDF.GetResource(NC_RDF(aPropertyString)); - var target = gDS.GetTarget(source, property, true); - if (target) { - target = target.QueryInterface(Components.interfaces.nsIRDFLiteral); - return target.Value; - } - return ""; -} - -function getHelperAppInfoForType(aURI, aPropertyString) -{ - var appURI = APP_URI(getLiteralForContentType(aURI, "value")); - var appRes = gRDF.GetResource(appURI); - var appProperty = gRDF.GetResource(NC_RDF(aPropertyString)); - return getLiteral(appRes, appProperty); -} - -function mimeHandlerExists(aMIMEType) -{ - var valueProperty = gRDF.GetResource(NC_RDF("value")); - var mimeSource = gRDF.GetResource(MIME_URI(aMIMEType)); - var mimeLiteral = gRDF.GetLiteral(gMIMEField.value); - return gDS.HasAssertion(mimeSource, valueProperty, mimeLiteral, true); -} - -// write to the ds -function assertMIMEStuff(aMIMEString, aPropertyString, aValueString) -{ - var mimeSource = gRDF.GetResource(aMIMEString); - var valueProperty = gRDF.GetResource(NC_RDF(aPropertyString)); - var mimeLiteral = gRDF.GetLiteral(aValueString); - gDS.Assert(mimeSource, valueProperty, mimeLiteral, true); -} - -function changeMIMEStuff(aMIMEString, aPropertyString, aValueString) -{ - var mimeSource = gRDF.GetResource(aMIMEString); - var valueProperty = gRDF.GetResource(NC_RDF(aPropertyString)); - var mimeLiteral = gRDF.GetLiteral(aValueString); - var currentValue = gDS.GetTarget(mimeSource, valueProperty, true); - gDS.Change(mimeSource, valueProperty, currentValue, mimeLiteral); -} - -function unassertMIMEStuff(aMIMEString, aPropertyString, aValueString) -{ - var mimeSource = gRDF.GetResource(aMIMEString); - var valueProperty = gRDF.GetResource(NC_RDF(aPropertyString)); - var mimeLiteral = gRDF.GetLiteral(aValueString); - gDS.Unassert(mimeSource, valueProperty, mimeLiteral, true); -} - -function removeOverride(aMIMEType) -{ - dump("*** mimeType = " + aMIMEType + "\n"); - // remove entry from seq - var rdfc = Components.classes["@mozilla.org/rdf/container;1"].createInstance(); - if (rdfc) { - rdfc = rdfc.QueryInterface(Components.interfaces.nsIRDFContainer); - if (rdfc) { - var containerRes = gRDF.GetResource("urn:mimetypes:root"); - rdfc.Init(gDS, containerRes); - var element = gRDF.GetResource(MIME_URI(aMIMEType)); - if (rdfc.IndexOf(element) != -1) { - try { - rdfc.RemoveElement(element, true); - } - catch(e) { - // suppress (benign?) errors - } - } - } - } - - // remove items from the graph - var urns = [ [MIME_URI, ["description", "editable", "value", "fileExtensions", "smallIcon", "largeIcon"], - [HANDLER_URI, "handlerProp"]], - [HANDLER_URI, ["handleInternal", "saveToDisk", "alwaysAsk"], - [APP_URI, "externalApplication"]], - [APP_URI, ["path", "prettyName"]] ]; - for (var i = 0; i < urns.length; i++) { - var mimeRes = gRDF.GetResource(urns[i][0](aMIMEType)); - // unassert the toplevel properties - var properties = urns[i][1]; - for (var j = 0; j < properties.length; j++) { - var propertyRes = gRDF.GetResource(NC_RDF(properties[j]), true); - if (properties[j] == "fileExtensions") { // hacky. do it better next time. - var mimeValues = gDS.GetTargets(mimeRes, propertyRes, true); - mimeValues = mimeValues.QueryInterface(Components.interfaces.nsISimpleEnumerator); - while (mimeValues.hasMoreElements()) { - var currItem = mimeValues.getNext(); - if (mimeRes && propertyRes && currItem) - gDS.Unassert(mimeRes, propertyRes, currItem, true); - } - } - else { - var mimeValue = gDS.GetTarget(mimeRes, propertyRes, true); - if (mimeRes && propertyRes && mimeValue) - gDS.Unassert(mimeRes, propertyRes, mimeValue, true); - } - } - if (urns[i][2]) { - var linkRes = gRDF.GetResource(NC_RDF(urns[i][2][1]), true); - var linkTarget = gRDF.GetResource(urns[i][2][0](aMIMEType), true); - gDS.Unassert(mimeRes, linkRes, linkTarget); - } - } - try { - gDS.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); - } catch(e) { - } -} - -function checkInput() { - var result = true; - // Check for empty MIME type field. - if ( gMIMEField.value.search(/\S/) == -1 ) { - // Input is not OK. - result = false; - - // Focus the mime type field. - gMIMEField.focus(); - - // Put up alert. Title is same as parent dialog's. - var title = window.document.documentElement.getAttribute( "title" ); - var text = gPrefApplicationsBundle.getString("emptyMIMEType"); - var prompter = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService); - prompter.alert(window, title, text); - } - return result; -} diff --git a/toolkit/mozapps/jar.mn b/toolkit/mozapps/jar.mn index 64746a1a539..db9f91d2791 100755 --- a/toolkit/mozapps/jar.mn +++ b/toolkit/mozapps/jar.mn @@ -2,7 +2,6 @@ toolkit.jar: % content mozapps %content/mozapps/ xpcnativewrappers=yes * content/mozapps/downloads/helperApps.js (downloads/content/helperApps.js) * content/mozapps/downloads/unknownContentType.xul (downloads/content/unknownContentType.xul) -* content/mozapps/downloads/overrideHandler.js (downloads/content/overrideHandler.js) * content/mozapps/downloads/downloads.xul (downloads/content/downloads.xul) * content/mozapps/downloads/downloads.js (downloads/content/downloads.js) * content/mozapps/downloads/DownloadProgressListener.js (downloads/content/DownloadProgressListener.js)