From 0ea8d7508db9817d395d059513b71996725644c1 Mon Sep 17 00:00:00 2001 From: Mark Finkle Date: Sat, 14 Nov 2009 00:18:25 -0500 Subject: [PATCH] Bug 528430: Add a directory provider so we can customize the cache folder at runtime [r=blassey] --HG-- rename : mobile/components/alertsService.js => mobile/components/AlertsService.js rename : mobile/components/downloadManagerUI.js => mobile/components/DownloadManagerUI.js rename : mobile/components/geolocationPrompt.js => mobile/components/GeolocationPrompt.js rename : mobile/components/helperAppDialog.js => mobile/components/HelperAppDialog.js rename : mobile/components/promptService.js => mobile/components/PromptService.js rename : mobile/components/xpiDialogService.js => mobile/components/XPIDialogService.js --- mobile/app/mobile.js | 4 - mobile/chrome/content/BrowserView.js | 4 +- .../{alertsService.js => AlertsService.js} | 0 mobile/components/DirectoryProvider.js | 93 +++++++++++++++++++ ...nloadManagerUI.js => DownloadManagerUI.js} | 0 ...locationPrompt.js => GeolocationPrompt.js} | 0 ...{helperAppDialog.js => HelperAppDialog.js} | 0 mobile/components/Makefile.in | 21 +++-- .../{promptService.js => PromptService.js} | 0 ...piDialogService.js => XPIDialogService.js} | 0 10 files changed, 107 insertions(+), 15 deletions(-) rename mobile/components/{alertsService.js => AlertsService.js} (100%) create mode 100644 mobile/components/DirectoryProvider.js rename mobile/components/{downloadManagerUI.js => DownloadManagerUI.js} (100%) rename mobile/components/{geolocationPrompt.js => GeolocationPrompt.js} (100%) rename mobile/components/{helperAppDialog.js => HelperAppDialog.js} (100%) rename mobile/components/{promptService.js => PromptService.js} (100%) rename mobile/components/{xpiDialogService.js => XPIDialogService.js} (100%) diff --git a/mobile/app/mobile.js b/mobile/app/mobile.js index 0cadbfa768f1..4d043a564172 100644 --- a/mobile/app/mobile.js +++ b/mobile/app/mobile.js @@ -61,7 +61,6 @@ pref("browser.dom.window.dump.enabled", false); #ifdef MOZ_PLATFORM_HILDON pref("browser.cache.disk.enable", true); pref("browser.cache.disk.capacity", 10240); // kilobytes -pref("browser.cache.disk.parent_directory", "/media/mmc2/.mozilla/@APP_NAME@"); #elifdef WINCE pref("browser.cache.disk.enable", false); pref("browser.cache.disk.capacity", 0); // kilobytes @@ -90,9 +89,6 @@ pref("browser.cache.offline.enable", true); pref("browser.cache.offline.capacity", 5120); // kilobytes pref("offline-apps.quota.max", 2048); // kilobytes pref("offline-apps.quota.warn", 1024); // kilobytes -#ifdef MOZ_PLATFORM_HILDON -pref("browser.cache.offline.parent_directory", "/media/mmc2/.mozilla/@APP_NAME@"); -#endif /* http prefs */ pref("network.http.pipelining", true); diff --git a/mobile/chrome/content/BrowserView.js b/mobile/chrome/content/BrowserView.js index 158c382bdbc6..e81f42298761 100644 --- a/mobile/chrome/content/BrowserView.js +++ b/mobile/chrome/content/BrowserView.js @@ -253,8 +253,8 @@ BrowserView.prototype = { case "Nokia N900": cacheSize = 26; break; - case "Nokia N8XX": - // N8XX has half the memory of N900 and crashes with higher numbers + case "Nokia N8xx": + // N8xx has half the memory of N900 and crashes with higher numbers cacheSize = 10; break; #endif diff --git a/mobile/components/alertsService.js b/mobile/components/AlertsService.js similarity index 100% rename from mobile/components/alertsService.js rename to mobile/components/AlertsService.js diff --git a/mobile/components/DirectoryProvider.js b/mobile/components/DirectoryProvider.js new file mode 100644 index 000000000000..b3e2f088b673 --- /dev/null +++ b/mobile/components/DirectoryProvider.js @@ -0,0 +1,93 @@ +/* ***** 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 XPI Dialog Service. + * + * The Initial Developer of the Original Code is Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2009 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Mark Finkle + * + * 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 ***** */ + +const Cc = Components.classes; +const Ci = Components.interfaces; + +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +// ----------------------------------------------------------------------- +// Directory Provider for special browser folders and files +// ----------------------------------------------------------------------- + +const NS_APP_CACHE_PARENT_DIR = "cachePDir"; + +function DirectoryProvider() {} + +DirectoryProvider.prototype = { + classDescription: "Directory Provider for special browser folders and files", + contractID: "@mozilla.org/browser/directory-provider;1", + classID: Components.ID("{ef0f7a87-c1ee-45a8-8d67-26f586e46a4b}"), + + QueryInterface: XPCOMUtils.generateQI([Ci.nsIDirectoryServiceProvider, Ci.nsIDirectoryServiceProvider2]), + + _xpcom_categories: [ + { category: "xpcom-directory-providers", entry: "browser-directory-provider" } + ], + + getFile: function(prop, persistent) { + if (prop == NS_APP_CACHE_PARENT_DIR) { + let dirsvc = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties); + let profile = dirsvc.get("ProfD", Ci.nsIFile); + + let sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2); + let device = sysInfo.get("device"); + switch (device) { +#ifdef MOZ_PLATFORM_HILDON + case "Nokia N900": + return profile; + + case "Nokia N8xx": + let folder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); + folder.initWithPath("/media/mmc2/.mozilla/fennec"); + return folder; +#endif + default: + return profile; + } + } + return Components.results.NS_ERROR_FAILURE; + }, + + getFiles: function(prop, persistent) { + return Components.results.NS_ERROR_FAILURE; + } +}; + +function NSGetModule(aCompMgr, aFileSpec) { + return XPCOMUtils.generateModule([DirectoryProvider]); +} + diff --git a/mobile/components/downloadManagerUI.js b/mobile/components/DownloadManagerUI.js similarity index 100% rename from mobile/components/downloadManagerUI.js rename to mobile/components/DownloadManagerUI.js diff --git a/mobile/components/geolocationPrompt.js b/mobile/components/GeolocationPrompt.js similarity index 100% rename from mobile/components/geolocationPrompt.js rename to mobile/components/GeolocationPrompt.js diff --git a/mobile/components/helperAppDialog.js b/mobile/components/HelperAppDialog.js similarity index 100% rename from mobile/components/helperAppDialog.js rename to mobile/components/HelperAppDialog.js diff --git a/mobile/components/Makefile.in b/mobile/components/Makefile.in index fbf5bbbbe9c7..f362c6aa11cc 100644 --- a/mobile/components/Makefile.in +++ b/mobile/components/Makefile.in @@ -46,20 +46,23 @@ include $(DEPTH)/config/autoconf.mk MODULE = browsercomps XPIDL_MODULE = browsercompsbase -EXTRA_PP_COMPONENTS = AboutRedirector.js +EXTRA_PP_COMPONENTS = \ + AboutRedirector.js \ + DirectoryProvider.js\ + $(NULL) EXTRA_COMPONENTS = \ BrowserStartup.js \ - geolocationPrompt.js \ - alertsService.js \ - xpiDialogService.js \ - downloadManagerUI.js \ - helperAppDialog.js \ - promptService.js \ + GeolocationPrompt.js \ + AlertsService.js \ + XPIDialogService.js \ + DownloadManagerUI.js \ + HelperAppDialog.js \ + PromptService.js \ $(NULL) DIRS = protocols \ - phone \ - $(NULL) + phone \ + $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/mobile/components/promptService.js b/mobile/components/PromptService.js similarity index 100% rename from mobile/components/promptService.js rename to mobile/components/PromptService.js diff --git a/mobile/components/xpiDialogService.js b/mobile/components/XPIDialogService.js similarity index 100% rename from mobile/components/xpiDialogService.js rename to mobile/components/XPIDialogService.js