summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2021-11-22 10:09:16 -0500
committerMatt A. Tobin <email@mattatobin.com>2021-11-22 10:09:16 -0500
commit3bcef0ff65fa2ab6a482543afd1b1e00dd31cfee (patch)
tree461aa9ac82fdfa7c4f03bede6f59df45d8ad2d9c
parenta29c4325f85d12b1e2a55851b58ad8921badd553 (diff)
downloadaura-central-3bcef0ff65fa2ab6a482543afd1b1e00dd31cfee.tar.gz
Issue %3005 - Centralize the Permissions Manager backend
- extensions/(cookie|permissions) -> components/permissions - components/cookie -> components/permissions - Related XPIDLs from netwerk -> components/permissions
-rw-r--r--components/cookie/moz.build6
-rw-r--r--components/moz.build2
-rw-r--r--components/permissions/content/cookieAcceptDialog.js (renamed from components/cookie/content/cookieAcceptDialog.js)0
-rw-r--r--components/permissions/content/cookieAcceptDialog.xul (renamed from components/cookie/content/cookieAcceptDialog.xul)0
-rw-r--r--components/permissions/jar.mn (renamed from components/cookie/jar.mn)0
-rw-r--r--components/permissions/locale/cookieAcceptDialog.dtd (renamed from components/cookie/locale/cookieAcceptDialog.dtd)0
-rw-r--r--components/permissions/locale/cookieAcceptDialog.properties (renamed from components/cookie/locale/cookieAcceptDialog.properties)0
-rw-r--r--components/permissions/moz.build31
-rw-r--r--components/permissions/public/nsICookieAcceptDialog.idl (renamed from extensions/cookie/nsICookieAcceptDialog.idl)0
-rw-r--r--components/permissions/public/nsICookiePermission.idl (renamed from netwerk/cookie/nsICookiePermission.idl)0
-rw-r--r--components/permissions/public/nsICookiePromptService.idl (renamed from extensions/cookie/nsICookiePromptService.idl)0
-rw-r--r--components/permissions/public/nsIPermission.idl (renamed from netwerk/base/nsIPermission.idl)0
-rw-r--r--components/permissions/public/nsIPermissionManager.idl (renamed from netwerk/base/nsIPermissionManager.idl)0
-rw-r--r--components/permissions/src/nsContentBlocker.cpp (renamed from extensions/permissions/nsContentBlocker.cpp)0
-rw-r--r--components/permissions/src/nsContentBlocker.h (renamed from extensions/permissions/nsContentBlocker.h)0
-rw-r--r--components/permissions/src/nsCookiePermission.cpp (renamed from extensions/cookie/nsCookiePermission.cpp)0
-rw-r--r--components/permissions/src/nsCookiePermission.h (renamed from extensions/cookie/nsCookiePermission.h)0
-rw-r--r--components/permissions/src/nsCookiePromptService.cpp (renamed from extensions/cookie/nsCookiePromptService.cpp)0
-rw-r--r--components/permissions/src/nsCookiePromptService.h (renamed from extensions/cookie/nsCookiePromptService.h)0
-rw-r--r--components/permissions/src/nsPermission.cpp (renamed from extensions/cookie/nsPermission.cpp)0
-rw-r--r--components/permissions/src/nsPermission.h (renamed from extensions/cookie/nsPermission.h)0
-rw-r--r--components/permissions/src/nsPermissionFactory.cpp60
-rw-r--r--components/permissions/src/nsPermissionManager.cpp (renamed from extensions/cookie/nsPermissionManager.cpp)0
-rw-r--r--components/permissions/src/nsPermissionManager.h (renamed from extensions/cookie/nsPermissionManager.h)0
-rw-r--r--components/permissions/src/nsPopupWindowManager.cpp (renamed from extensions/cookie/nsPopupWindowManager.cpp)0
-rw-r--r--components/permissions/src/nsPopupWindowManager.h (renamed from extensions/cookie/nsPopupWindowManager.h)0
-rw-r--r--dom/ipc/ContentChild.cpp2
-rw-r--r--dom/ipc/ContentParent.cpp4
-rw-r--r--dom/ipc/moz.build2
-rw-r--r--extensions/cookie/moz.build29
-rw-r--r--extensions/cookie/nsCookieModule.cpp51
-rw-r--r--extensions/cookie/test/beltzner.jpgbin9995 -> 0 bytes
-rw-r--r--extensions/cookie/test/beltzner.jpg^headers^3
-rw-r--r--extensions/cookie/test/browser.ini3
-rw-r--r--extensions/cookie/test/browser_test_favicon.js28
-rw-r--r--extensions/cookie/test/damonbowling.jpgbin44008 -> 0 bytes
-rw-r--r--extensions/cookie/test/damonbowling.jpg^headers^2
-rw-r--r--extensions/cookie/test/file_chromecommon.js15
-rw-r--r--extensions/cookie/test/file_domain_hierarchy_inner.html13
-rw-r--r--extensions/cookie/test/file_domain_hierarchy_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_domain_hierarchy_inner_inner.html13
-rw-r--r--extensions/cookie/test/file_domain_hierarchy_inner_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html13
-rw-r--r--extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_domain_inner.html13
-rw-r--r--extensions/cookie/test/file_domain_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_domain_inner_inner.html13
-rw-r--r--extensions/cookie/test/file_domain_inner_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_image_inner.html14
-rw-r--r--extensions/cookie/test/file_image_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_image_inner_inner.html19
-rw-r--r--extensions/cookie/test/file_image_inner_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_loadflags_inner.html16
-rw-r--r--extensions/cookie/test/file_loadflags_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_localhost_inner.html13
-rw-r--r--extensions/cookie/test/file_localhost_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_loopback_inner.html13
-rw-r--r--extensions/cookie/test/file_loopback_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_subdomain_inner.html13
-rw-r--r--extensions/cookie/test/file_subdomain_inner.html^headers^1
-rw-r--r--extensions/cookie/test/file_testcommon.js70
-rw-r--r--extensions/cookie/test/file_testloadflags.js104
-rw-r--r--extensions/cookie/test/file_testloadflags_chromescript.js112
-rw-r--r--extensions/cookie/test/image1.pngbin821 -> 0 bytes
-rw-r--r--extensions/cookie/test/image1.png^headers^3
-rw-r--r--extensions/cookie/test/image2.pngbin821 -> 0 bytes
-rw-r--r--extensions/cookie/test/image2.png^headers^3
-rw-r--r--extensions/cookie/test/mochitest.ini52
-rw-r--r--extensions/cookie/test/moz.build14
-rw-r--r--extensions/cookie/test/test1.css2
-rw-r--r--extensions/cookie/test/test1.css^headers^3
-rw-r--r--extensions/cookie/test/test2.css2
-rw-r--r--extensions/cookie/test/test2.css^headers^3
-rw-r--r--extensions/cookie/test/test_different_domain_in_hierarchy.html15
-rw-r--r--extensions/cookie/test/test_differentdomain.html15
-rw-r--r--extensions/cookie/test/test_image.html14
-rw-r--r--extensions/cookie/test/test_loadflags.html21
-rw-r--r--extensions/cookie/test/test_same_base_domain.html15
-rw-r--r--extensions/cookie/test/test_same_base_domain_2.html15
-rw-r--r--extensions/cookie/test/test_same_base_domain_3.html15
-rw-r--r--extensions/cookie/test/test_same_base_domain_4.html15
-rw-r--r--extensions/cookie/test/test_same_base_domain_5.html15
-rw-r--r--extensions/cookie/test/test_same_base_domain_6.html15
-rw-r--r--extensions/cookie/test/test_samedomain.html15
-rw-r--r--extensions/cookie/test/unit/cookieprompt.js22
-rw-r--r--extensions/cookie/test/unit/cookieprompt.manifest2
-rw-r--r--extensions/cookie/test/unit/head_cookies.js570
-rw-r--r--extensions/cookie/test/unit/test_bug526789.js236
-rw-r--r--extensions/cookie/test/unit/test_bug650522.js16
-rw-r--r--extensions/cookie/test/unit/test_bug667087.js16
-rw-r--r--extensions/cookie/test/unit/test_cookies_async_failure.js600
-rw-r--r--extensions/cookie/test/unit/test_cookies_persistence.js78
-rw-r--r--extensions/cookie/test/unit/test_cookies_privatebrowsing.js115
-rw-r--r--extensions/cookie/test/unit/test_cookies_profile_close.js92
-rw-r--r--extensions/cookie/test/unit/test_cookies_read.js122
-rw-r--r--extensions/cookie/test/unit/test_cookies_sync_failure.js286
-rw-r--r--extensions/cookie/test/unit/test_cookies_thirdparty.js147
-rw-r--r--extensions/cookie/test/unit/test_cookies_thirdparty_session.js69
-rw-r--r--extensions/cookie/test/unit/test_domain_eviction.js153
-rw-r--r--extensions/cookie/test/unit/test_eviction.js249
-rw-r--r--extensions/cookie/test/unit/test_permmanager_cleardata.js68
-rw-r--r--extensions/cookie/test/unit/test_permmanager_defaults.js295
-rw-r--r--extensions/cookie/test/unit/test_permmanager_expiration.js82
-rw-r--r--extensions/cookie/test/unit/test_permmanager_getAllForURI.js78
-rw-r--r--extensions/cookie/test/unit/test_permmanager_getPermissionObject.js95
-rw-r--r--extensions/cookie/test/unit/test_permmanager_idn.js49
-rw-r--r--extensions/cookie/test/unit/test_permmanager_load_invalid_entries.js142
-rw-r--r--extensions/cookie/test/unit/test_permmanager_local_files.js43
-rw-r--r--extensions/cookie/test/unit/test_permmanager_matches.js183
-rw-r--r--extensions/cookie/test/unit/test_permmanager_matchesuri.js150
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_4-7.js207
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js226
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js284
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js168
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js284
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js162
-rw-r--r--extensions/cookie/test/unit/test_permmanager_migrate_7-8.js246
-rw-r--r--extensions/cookie/test/unit/test_permmanager_notifications.js140
-rw-r--r--extensions/cookie/test/unit/test_permmanager_removeall.js36
-rw-r--r--extensions/cookie/test/unit/test_permmanager_removeforapp.js99
-rw-r--r--extensions/cookie/test/unit/test_permmanager_removepermission.js67
-rw-r--r--extensions/cookie/test/unit/test_permmanager_removesince.js69
-rw-r--r--extensions/cookie/test/unit/test_permmanager_subdomains.js57
-rw-r--r--extensions/cookie/test/unit/test_schema_2_migration.js207
-rw-r--r--extensions/cookie/test/unit/test_schema_3_migration.js125
-rw-r--r--extensions/cookie/test/unit/xpcshell.ini48
-rw-r--r--extensions/cookie/test/unit_ipc/test_child.js59
-rw-r--r--extensions/cookie/test/unit_ipc/test_parent.js59
-rw-r--r--extensions/cookie/test/unit_ipc/xpcshell.ini7
-rw-r--r--extensions/permissions/moz.build11
-rw-r--r--extensions/permissions/nsModuleFactory.cpp37
-rw-r--r--layout/build/moz.build2
-rw-r--r--layout/build/nsLayoutStatics.cpp3
-rw-r--r--netwerk/base/moz.build2
-rw-r--r--netwerk/cookie/moz.build1
-rw-r--r--system/moz.configure10
-rw-r--r--system/toolkit.mozbuild6
-rw-r--r--toolkit/locales/jar.mn4
138 files changed, 97 insertions, 7427 deletions
diff --git a/components/cookie/moz.build b/components/cookie/moz.build
deleted file mode 100644
index aee4b90a5..000000000
--- a/components/cookie/moz.build
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-JAR_MANIFESTS += ['jar.mn']
diff --git a/components/moz.build b/components/moz.build
index 649e7a55b..fa2169f54 100644
--- a/components/moz.build
+++ b/components/moz.build
@@ -22,7 +22,7 @@ DIRS += [
'commandlines',
'console',
'contentprefs',
- 'cookie',
+ 'permissions',
'crashmonitor',
'downloads',
'directory',
diff --git a/components/cookie/content/cookieAcceptDialog.js b/components/permissions/content/cookieAcceptDialog.js
index 5f5760305..5f5760305 100644
--- a/components/cookie/content/cookieAcceptDialog.js
+++ b/components/permissions/content/cookieAcceptDialog.js
diff --git a/components/cookie/content/cookieAcceptDialog.xul b/components/permissions/content/cookieAcceptDialog.xul
index 99fd92c0c..99fd92c0c 100644
--- a/components/cookie/content/cookieAcceptDialog.xul
+++ b/components/permissions/content/cookieAcceptDialog.xul
diff --git a/components/cookie/jar.mn b/components/permissions/jar.mn
index 2826bbcd6..2826bbcd6 100644
--- a/components/cookie/jar.mn
+++ b/components/permissions/jar.mn
diff --git a/components/cookie/locale/cookieAcceptDialog.dtd b/components/permissions/locale/cookieAcceptDialog.dtd
index 52664f1de..52664f1de 100644
--- a/components/cookie/locale/cookieAcceptDialog.dtd
+++ b/components/permissions/locale/cookieAcceptDialog.dtd
diff --git a/components/cookie/locale/cookieAcceptDialog.properties b/components/permissions/locale/cookieAcceptDialog.properties
index 698c6f010..698c6f010 100644
--- a/components/cookie/locale/cookieAcceptDialog.properties
+++ b/components/permissions/locale/cookieAcceptDialog.properties
diff --git a/components/permissions/moz.build b/components/permissions/moz.build
new file mode 100644
index 000000000..e25484d9f
--- /dev/null
+++ b/components/permissions/moz.build
@@ -0,0 +1,31 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+include('/ipc/chromium/chromium-config.mozbuild')
+
+XPIDL_SOURCES += [
+ 'public/nsICookieAcceptDialog.idl',
+ 'public/nsICookiePermission.idl',
+ 'public/nsICookiePromptService.idl',
+ 'public/nsIPermission.idl',
+ 'public/nsIPermissionManager.idl',
+]
+
+UNIFIED_SOURCES += [
+ 'src/nsContentBlocker.cpp',
+ 'src/nsCookiePermission.cpp',
+ 'src/nsCookiePromptService.cpp',
+ 'src/nsPermission.cpp',
+ 'src/nsPermissionFactory.cpp',
+ 'src/nsPermissionManager.cpp',
+ 'src/nsPopupWindowManager.cpp',
+]
+
+if CONFIG['GNU_CXX']:
+ CXXFLAGS += ['-Wno-error=shadow']
+
+XPIDL_MODULE = 'permissions'
+FINAL_LIBRARY = 'xul'
+JAR_MANIFESTS += ['jar.mn']
diff --git a/extensions/cookie/nsICookieAcceptDialog.idl b/components/permissions/public/nsICookieAcceptDialog.idl
index b02339780..b02339780 100644
--- a/extensions/cookie/nsICookieAcceptDialog.idl
+++ b/components/permissions/public/nsICookieAcceptDialog.idl
diff --git a/netwerk/cookie/nsICookiePermission.idl b/components/permissions/public/nsICookiePermission.idl
index fd4a879f9..fd4a879f9 100644
--- a/netwerk/cookie/nsICookiePermission.idl
+++ b/components/permissions/public/nsICookiePermission.idl
diff --git a/extensions/cookie/nsICookiePromptService.idl b/components/permissions/public/nsICookiePromptService.idl
index 163da6a26..163da6a26 100644
--- a/extensions/cookie/nsICookiePromptService.idl
+++ b/components/permissions/public/nsICookiePromptService.idl
diff --git a/netwerk/base/nsIPermission.idl b/components/permissions/public/nsIPermission.idl
index c5ddd90fe..c5ddd90fe 100644
--- a/netwerk/base/nsIPermission.idl
+++ b/components/permissions/public/nsIPermission.idl
diff --git a/netwerk/base/nsIPermissionManager.idl b/components/permissions/public/nsIPermissionManager.idl
index b61817d4c..b61817d4c 100644
--- a/netwerk/base/nsIPermissionManager.idl
+++ b/components/permissions/public/nsIPermissionManager.idl
diff --git a/extensions/permissions/nsContentBlocker.cpp b/components/permissions/src/nsContentBlocker.cpp
index 391785dc3..391785dc3 100644
--- a/extensions/permissions/nsContentBlocker.cpp
+++ b/components/permissions/src/nsContentBlocker.cpp
diff --git a/extensions/permissions/nsContentBlocker.h b/components/permissions/src/nsContentBlocker.h
index 880300952..880300952 100644
--- a/extensions/permissions/nsContentBlocker.h
+++ b/components/permissions/src/nsContentBlocker.h
diff --git a/extensions/cookie/nsCookiePermission.cpp b/components/permissions/src/nsCookiePermission.cpp
index 21e555376..21e555376 100644
--- a/extensions/cookie/nsCookiePermission.cpp
+++ b/components/permissions/src/nsCookiePermission.cpp
diff --git a/extensions/cookie/nsCookiePermission.h b/components/permissions/src/nsCookiePermission.h
index d683f206a..d683f206a 100644
--- a/extensions/cookie/nsCookiePermission.h
+++ b/components/permissions/src/nsCookiePermission.h
diff --git a/extensions/cookie/nsCookiePromptService.cpp b/components/permissions/src/nsCookiePromptService.cpp
index 258193ab8..258193ab8 100644
--- a/extensions/cookie/nsCookiePromptService.cpp
+++ b/components/permissions/src/nsCookiePromptService.cpp
diff --git a/extensions/cookie/nsCookiePromptService.h b/components/permissions/src/nsCookiePromptService.h
index a6e10fce4..a6e10fce4 100644
--- a/extensions/cookie/nsCookiePromptService.h
+++ b/components/permissions/src/nsCookiePromptService.h
diff --git a/extensions/cookie/nsPermission.cpp b/components/permissions/src/nsPermission.cpp
index 3d1eb140a..3d1eb140a 100644
--- a/extensions/cookie/nsPermission.cpp
+++ b/components/permissions/src/nsPermission.cpp
diff --git a/extensions/cookie/nsPermission.h b/components/permissions/src/nsPermission.h
index 6beb8aef4..6beb8aef4 100644
--- a/extensions/cookie/nsPermission.h
+++ b/components/permissions/src/nsPermission.h
diff --git a/components/permissions/src/nsPermissionFactory.cpp b/components/permissions/src/nsPermissionFactory.cpp
new file mode 100644
index 000000000..e170c9460
--- /dev/null
+++ b/components/permissions/src/nsPermissionFactory.cpp
@@ -0,0 +1,60 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/ModuleUtils.h"
+#include "nsIServiceManager.h"
+#include "nsPermissionManager.h"
+#include "nsPopupWindowManager.h"
+#include "nsICategoryManager.h"
+#include "nsContentBlocker.h"
+#include "nsCookiePromptService.h"
+#include "nsCookiePermission.h"
+#include "nsXPIDLString.h"
+
+// Define the constructor function for the objects
+NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPermissionManager,
+ nsPermissionManager::GetXPCOMSingleton)
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPopupWindowManager, Init)
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsContentBlocker, Init)
+NS_GENERIC_FACTORY_CONSTRUCTOR(nsCookiePermission)
+NS_GENERIC_FACTORY_CONSTRUCTOR(nsCookiePromptService)
+
+NS_DEFINE_NAMED_CID(NS_PERMISSIONMANAGER_CID);
+NS_DEFINE_NAMED_CID(NS_POPUPWINDOWMANAGER_CID);
+NS_DEFINE_NAMED_CID(NS_CONTENTBLOCKER_CID);
+NS_DEFINE_NAMED_CID(NS_COOKIEPROMPTSERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_COOKIEPERMISSION_CID);
+
+static const mozilla::Module::CIDEntry kPermissionsCIDs[] = {
+ { &kNS_PERMISSIONMANAGER_CID, false, nullptr, nsIPermissionManagerConstructor },
+ { &kNS_POPUPWINDOWMANAGER_CID, false, nullptr, nsPopupWindowManagerConstructor },
+ { &kNS_CONTENTBLOCKER_CID, false, nullptr, nsContentBlockerConstructor },
+ { &kNS_COOKIEPROMPTSERVICE_CID, false, nullptr, nsCookiePromptServiceConstructor },
+ { &kNS_COOKIEPERMISSION_CID, false, nullptr, nsCookiePermissionConstructor },
+ { nullptr }
+};
+
+static const mozilla::Module::ContractIDEntry kPermissionsContracts[] = {
+ { NS_PERMISSIONMANAGER_CONTRACTID, &kNS_PERMISSIONMANAGER_CID },
+ { NS_POPUPWINDOWMANAGER_CONTRACTID, &kNS_POPUPWINDOWMANAGER_CID },
+ { NS_CONTENTBLOCKER_CONTRACTID, &kNS_CONTENTBLOCKER_CID },
+ { NS_COOKIEPROMPTSERVICE_CONTRACTID, &kNS_COOKIEPROMPTSERVICE_CID },
+ { NS_COOKIEPERMISSION_CONTRACTID, &kNS_COOKIEPERMISSION_CID },
+ { nullptr }
+};
+
+static const mozilla::Module::CategoryEntry kPermissionsCategories[] = {
+ { "content-policy", NS_CONTENTBLOCKER_CONTRACTID, NS_CONTENTBLOCKER_CONTRACTID },
+ { nullptr }
+};
+
+static const mozilla::Module kPermissionsModule = {
+ mozilla::Module::kVersion,
+ kPermissionsCIDs,
+ kPermissionsContracts,
+ kPermissionsCategories
+};
+
+NSMODULE_DEFN(nsPermissionsModule) = &kPermissionsModule;
diff --git a/extensions/cookie/nsPermissionManager.cpp b/components/permissions/src/nsPermissionManager.cpp
index afdaea63f..afdaea63f 100644
--- a/extensions/cookie/nsPermissionManager.cpp
+++ b/components/permissions/src/nsPermissionManager.cpp
diff --git a/extensions/cookie/nsPermissionManager.h b/components/permissions/src/nsPermissionManager.h
index 4b21500b1..4b21500b1 100644
--- a/extensions/cookie/nsPermissionManager.h
+++ b/components/permissions/src/nsPermissionManager.h
diff --git a/extensions/cookie/nsPopupWindowManager.cpp b/components/permissions/src/nsPopupWindowManager.cpp
index d95fb7440..d95fb7440 100644
--- a/extensions/cookie/nsPopupWindowManager.cpp
+++ b/components/permissions/src/nsPopupWindowManager.cpp
diff --git a/extensions/cookie/nsPopupWindowManager.h b/components/permissions/src/nsPopupWindowManager.h
index dd83b5abb..dd83b5abb 100644
--- a/extensions/cookie/nsPopupWindowManager.h
+++ b/components/permissions/src/nsPopupWindowManager.h
diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp
index 5ff77092a..b493b6c06 100644
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -123,10 +123,8 @@
#include "signaling/src/peerconnection/WebrtcGlobalChild.h"
#endif
-#ifdef MOZ_PERMISSIONS
#include "nsPermission.h"
#include "nsPermissionManager.h"
-#endif
#include "PermissionMessageUtils.h"
diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp
index 410d93de2..7c2a6324f 100644
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -185,9 +185,7 @@
#include "mozilla/Hal.h"
#endif
-#ifdef MOZ_PERMISSIONS
# include "nsPermissionManager.h"
-#endif
#ifdef MOZ_WIDGET_GTK
#include <gdk/gdk.h>
@@ -2227,7 +2225,6 @@ ContentParent::RecvReadDataStorageArray(const nsString& aFilename,
bool
ContentParent::RecvReadPermissions(InfallibleTArray<IPC::Permission>* aPermissions)
{
-#ifdef MOZ_PERMISSIONS
nsCOMPtr<nsIPermissionManager> permissionManagerIface =
services::GetPermissionManager();
nsPermissionManager* permissionManager =
@@ -2270,7 +2267,6 @@ ContentParent::RecvReadPermissions(InfallibleTArray<IPC::Permission>* aPermissio
// Ask for future changes
mSendPermissionUpdates = true;
-#endif
return true;
}
diff --git a/dom/ipc/moz.build b/dom/ipc/moz.build
index 392f66fd4..f5c97940e 100644
--- a/dom/ipc/moz.build
+++ b/dom/ipc/moz.build
@@ -101,6 +101,7 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_TARGET'] == 'Darwin':
LOCAL_INCLUDES += [
'/caps',
+ '/components/permissions/src',
'/components/registry/src',
'/docshell/base',
'/dom/base',
@@ -113,7 +114,6 @@ LOCAL_INCLUDES += [
'/dom/storage',
'/dom/workers',
'/embedding/components/printingui/ipc',
- '/extensions/cookie',
'/extensions/spellcheck/src',
'/gfx/2d',
'/hal/sandbox',
diff --git a/extensions/cookie/moz.build b/extensions/cookie/moz.build
deleted file mode 100644
index ce6b19eae..000000000
--- a/extensions/cookie/moz.build
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-TEST_DIRS += ['test']
-
-XPIDL_SOURCES += [
- 'nsICookieAcceptDialog.idl',
- 'nsICookiePromptService.idl',
-]
-
-XPIDL_MODULE = 'cookie'
-
-UNIFIED_SOURCES += [
- 'nsCookieModule.cpp',
- 'nsCookiePermission.cpp',
- 'nsCookiePromptService.cpp',
- 'nsPermission.cpp',
- 'nsPermissionManager.cpp',
- 'nsPopupWindowManager.cpp',
-]
-
-include('/ipc/chromium/chromium-config.mozbuild')
-
-FINAL_LIBRARY = 'xul'
-
-if CONFIG['GNU_CXX']:
- CXXFLAGS += ['-Wno-error=shadow']
diff --git a/extensions/cookie/nsCookieModule.cpp b/extensions/cookie/nsCookieModule.cpp
deleted file mode 100644
index 1157e0c5d..000000000
--- a/extensions/cookie/nsCookieModule.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-
-#include "mozilla/ModuleUtils.h"
-#include "nsIServiceManager.h"
-#include "nsPermissionManager.h"
-#include "nsPopupWindowManager.h"
-#include "nsICategoryManager.h"
-#include "nsCookiePromptService.h"
-#include "nsCookiePermission.h"
-#include "nsXPIDLString.h"
-
-// Define the constructor function for the objects
-NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPermissionManager,
- nsPermissionManager::GetXPCOMSingleton)
-NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPopupWindowManager, Init)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsCookiePermission)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsCookiePromptService)
-
-NS_DEFINE_NAMED_CID(NS_PERMISSIONMANAGER_CID);
-NS_DEFINE_NAMED_CID(NS_POPUPWINDOWMANAGER_CID);
-NS_DEFINE_NAMED_CID(NS_COOKIEPROMPTSERVICE_CID);
-NS_DEFINE_NAMED_CID(NS_COOKIEPERMISSION_CID);
-
-
-static const mozilla::Module::CIDEntry kCookieCIDs[] = {
- { &kNS_PERMISSIONMANAGER_CID, false, nullptr, nsIPermissionManagerConstructor },
- { &kNS_POPUPWINDOWMANAGER_CID, false, nullptr, nsPopupWindowManagerConstructor },
- { &kNS_COOKIEPROMPTSERVICE_CID, false, nullptr, nsCookiePromptServiceConstructor },
- { &kNS_COOKIEPERMISSION_CID, false, nullptr, nsCookiePermissionConstructor },
- { nullptr }
-};
-
-static const mozilla::Module::ContractIDEntry kCookieContracts[] = {
- { NS_PERMISSIONMANAGER_CONTRACTID, &kNS_PERMISSIONMANAGER_CID },
- { NS_POPUPWINDOWMANAGER_CONTRACTID, &kNS_POPUPWINDOWMANAGER_CID },
- { NS_COOKIEPROMPTSERVICE_CONTRACTID, &kNS_COOKIEPROMPTSERVICE_CID },
- { NS_COOKIEPERMISSION_CONTRACTID, &kNS_COOKIEPERMISSION_CID },
- { nullptr }
-};
-
-static const mozilla::Module kCookieModule = {
- mozilla::Module::kVersion,
- kCookieCIDs,
- kCookieContracts
-};
-
-NSMODULE_DEFN(nsCookieModule) = &kCookieModule;
diff --git a/extensions/cookie/test/beltzner.jpg b/extensions/cookie/test/beltzner.jpg
deleted file mode 100644
index 75849bc40..000000000
--- a/extensions/cookie/test/beltzner.jpg
+++ /dev/null
Binary files differ
diff --git a/extensions/cookie/test/beltzner.jpg^headers^ b/extensions/cookie/test/beltzner.jpg^headers^
deleted file mode 100644
index cb51f2701..000000000
--- a/extensions/cookie/test/beltzner.jpg^headers^
+++ /dev/null
@@ -1,3 +0,0 @@
-Cache-Control: no-store
-Set-Cookie: mike=beltzer
-
diff --git a/extensions/cookie/test/browser.ini b/extensions/cookie/test/browser.ini
deleted file mode 100644
index da7b1548f..000000000
--- a/extensions/cookie/test/browser.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[DEFAULT]
-
-[browser_test_favicon.js]
diff --git a/extensions/cookie/test/browser_test_favicon.js b/extensions/cookie/test/browser_test_favicon.js
deleted file mode 100644
index a89a70017..000000000
--- a/extensions/cookie/test/browser_test_favicon.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// tests third party cookie blocking using a favicon load directly from chrome.
-// in this case, the docshell of the channel is chrome, not content; thus
-// the cookie should be considered third party.
-
-function test() {
- waitForExplicitFinish();
-
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 1);
-
- Services.obs.addObserver(function (theSubject, theTopic, theData) {
- var uri = theSubject.QueryInterface(Components.interfaces.nsIURI);
- var domain = uri.host;
-
- if (domain == "example.org") {
- ok(true, "foreign favicon cookie was blocked");
-
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- Services.obs.removeObserver(arguments.callee, "cookie-rejected");
-
- finish();
- }
- }, "cookie-rejected", false);
-
- // kick off a favicon load
- gBrowser.setIcon(gBrowser.selectedTab, "http://example.org/tests/extensions/cookie/test/damonbowling.jpg",
- Services.scriptSecurityManager.getSystemPrincipal());
-}
diff --git a/extensions/cookie/test/damonbowling.jpg b/extensions/cookie/test/damonbowling.jpg
deleted file mode 100644
index 8bdb2b604..000000000
--- a/extensions/cookie/test/damonbowling.jpg
+++ /dev/null
Binary files differ
diff --git a/extensions/cookie/test/damonbowling.jpg^headers^ b/extensions/cookie/test/damonbowling.jpg^headers^
deleted file mode 100644
index 77f4f4908..000000000
--- a/extensions/cookie/test/damonbowling.jpg^headers^
+++ /dev/null
@@ -1,2 +0,0 @@
-Cache-Control: no-store
-Set-Cookie: damon=bowling
diff --git a/extensions/cookie/test/file_chromecommon.js b/extensions/cookie/test/file_chromecommon.js
deleted file mode 100644
index 4383876b2..000000000
--- a/extensions/cookie/test/file_chromecommon.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let { classes: Cc, utils: Cu, interfaces: Ci } = Components;
-
-let cs = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2);
-
-addMessageListener("getCookieCountAndClear", () => {
- let count = 0;
- for (let list = cs.enumerator; list.hasMoreElements(); list.getNext())
- ++count;
- cs.removeAll();
-
- sendAsyncMessage("getCookieCountAndClear:return", { count });
-});
-
-cs.removeAll();
diff --git a/extensions/cookie/test/file_domain_hierarchy_inner.html b/extensions/cookie/test/file_domain_hierarchy_inner.html
deleted file mode 100644
index a62e1b9e4..000000000
--- a/extensions/cookie/test/file_domain_hierarchy_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-<body>
-<iframe name="frame1" src="http://example.com/tests/extensions/cookie/test/file_domain_hierarchy_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_domain_hierarchy_inner.html^headers^ b/extensions/cookie/test/file_domain_hierarchy_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_domain_hierarchy_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_domain_hierarchy_inner_inner.html b/extensions/cookie/test/file_domain_hierarchy_inner_inner.html
deleted file mode 100644
index 9b8f1a2f3..000000000
--- a/extensions/cookie/test/file_domain_hierarchy_inner_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can2=has2";
-
- // send a message to our test document, to say we're done loading
- window.parent.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-<body>
-<iframe name="frame1" src="http://example.org/tests/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_domain_hierarchy_inner_inner.html^headers^ b/extensions/cookie/test/file_domain_hierarchy_inner_inner.html^headers^
deleted file mode 100644
index 405494cd6..000000000
--- a/extensions/cookie/test/file_domain_hierarchy_inner_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta2=tag2
diff --git a/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html b/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html
deleted file mode 100644
index d306efb1c..000000000
--- a/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can3=has3";
-
- // send a message to our test document, to say we're done loading
- window.parent.parent.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html^headers^ b/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html^headers^
deleted file mode 100644
index add3336ec..000000000
--- a/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta3=tag3
diff --git a/extensions/cookie/test/file_domain_inner.html b/extensions/cookie/test/file_domain_inner.html
deleted file mode 100644
index 9db41e904..000000000
--- a/extensions/cookie/test/file_domain_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-<body>
-<iframe name="frame1" src="http://example.org/tests/extensions/cookie/test/file_domain_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_domain_inner.html^headers^ b/extensions/cookie/test/file_domain_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_domain_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_domain_inner_inner.html b/extensions/cookie/test/file_domain_inner_inner.html
deleted file mode 100644
index 5850e3fa0..000000000
--- a/extensions/cookie/test/file_domain_inner_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can2=has2";
-
- // send a message to our test document, to say we're done loading
- window.parent.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_domain_inner_inner.html^headers^ b/extensions/cookie/test/file_domain_inner_inner.html^headers^
deleted file mode 100644
index 405494cd6..000000000
--- a/extensions/cookie/test/file_domain_inner_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta2=tag2
diff --git a/extensions/cookie/test/file_image_inner.html b/extensions/cookie/test/file_image_inner.html
deleted file mode 100644
index 902a055e4..000000000
--- a/extensions/cookie/test/file_image_inner.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-</head>
-<body>
-<iframe name="frame1" src="http://example.org/tests/extensions/cookie/test/file_image_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_image_inner.html^headers^ b/extensions/cookie/test/file_image_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_image_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_image_inner_inner.html b/extensions/cookie/test/file_image_inner_inner.html
deleted file mode 100644
index d24ae0d27..000000000
--- a/extensions/cookie/test/file_image_inner_inner.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <link rel="stylesheet" type="text/css" media="all" href="http://example.org/tests/extensions/cookie/test/test1.css" />
- <link rel="stylesheet" type="text/css" media="all" href="http://example.com/tests/extensions/cookie/test/test2.css" />
- <script type="text/javascript">
- function runTest() {
- document.cookie = "can2=has2";
-
- // send a message to our test document, to say we're done loading
- window.parent.opener.postMessage("message", "http://mochi.test:8888");
- }
- </script>
-</head>
-<body>
-<img src="http://example.org/tests/extensions/cookie/test/image1.png" onload="runTest()" />
-<img src="http://example.com/tests/extensions/cookie/test/image2.png" onload="runTest()" />
-</body>
-</html>
diff --git a/extensions/cookie/test/file_image_inner_inner.html^headers^ b/extensions/cookie/test/file_image_inner_inner.html^headers^
deleted file mode 100644
index 405494cd6..000000000
--- a/extensions/cookie/test/file_image_inner_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta2=tag2
diff --git a/extensions/cookie/test/file_loadflags_inner.html b/extensions/cookie/test/file_loadflags_inner.html
deleted file mode 100644
index fbea01cfd..000000000
--- a/extensions/cookie/test/file_loadflags_inner.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- function runTest() {
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("f_lf_i msg data img", "http://mochi.test:8888");
- }
- </script>
-</head>
-<body onload="window.opener.postMessage('f_lf_i msg data page', 'http://mochi.test:8888');">
-<img src="http://example.org/tests/extensions/cookie/test/beltzner.jpg" onload="runTest()" />
-</body>
-</html>
diff --git a/extensions/cookie/test/file_loadflags_inner.html^headers^ b/extensions/cookie/test/file_loadflags_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_loadflags_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_localhost_inner.html b/extensions/cookie/test/file_localhost_inner.html
deleted file mode 100644
index 82641d71c..000000000
--- a/extensions/cookie/test/file_localhost_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-<body>
-<iframe name="frame1" src="http://mochi.test:8888/tests/extensions/cookie/test/file_domain_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_localhost_inner.html^headers^ b/extensions/cookie/test/file_localhost_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_localhost_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_loopback_inner.html b/extensions/cookie/test/file_loopback_inner.html
deleted file mode 100644
index 9af1a6568..000000000
--- a/extensions/cookie/test/file_loopback_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-<body>
-<iframe name="frame1" src="http://127.0.0.1:8888/tests/extensions/cookie/test/file_domain_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_loopback_inner.html^headers^ b/extensions/cookie/test/file_loopback_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_loopback_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_subdomain_inner.html b/extensions/cookie/test/file_subdomain_inner.html
deleted file mode 100644
index 0aab0d852..000000000
--- a/extensions/cookie/test/file_subdomain_inner.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <script type="text/javascript">
- document.cookie = "can=has";
-
- // send a message to our test document, to say we're done loading
- window.opener.postMessage("message", "http://mochi.test:8888");
- </script>
-<body>
-<iframe name="frame1" src="http://test2.example.org/tests/extensions/cookie/test/file_domain_inner_inner.html"></iframe>
-</body>
-</html>
diff --git a/extensions/cookie/test/file_subdomain_inner.html^headers^ b/extensions/cookie/test/file_subdomain_inner.html^headers^
deleted file mode 100644
index 993cedb90..000000000
--- a/extensions/cookie/test/file_subdomain_inner.html^headers^
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: meta=tag
diff --git a/extensions/cookie/test/file_testcommon.js b/extensions/cookie/test/file_testcommon.js
deleted file mode 100644
index 3ee53c52c..000000000
--- a/extensions/cookie/test/file_testcommon.js
+++ /dev/null
@@ -1,70 +0,0 @@
-const SCRIPT_URL = SimpleTest.getTestFileURL("file_chromecommon.js");
-
-var gExpectedCookies;
-var gExpectedLoads;
-
-var gPopup;
-
-var gScript;
-
-var gLoads = 0;
-
-function setupTest(uri, cookies, loads) {
- SimpleTest.waitForExplicitFinish();
-
- var prefSet = new Promise(resolve => {
- SpecialPowers.pushPrefEnv({ set: [["network.cookie.cookieBehavior", 1]] }, resolve);
- });
-
- gScript = SpecialPowers.loadChromeScript(SCRIPT_URL);
- gExpectedCookies = cookies;
- gExpectedLoads = loads;
-
- // Listen for MessageEvents.
- window.addEventListener("message", messageReceiver, false);
-
- prefSet.then(() => {
- // load a window which contains an iframe; each will attempt to set
- // cookies from their respective domains.
- gPopup = window.open(uri, 'hai', 'width=100,height=100');
- });
-}
-
-function finishTest() {
- gScript.destroy();
- SimpleTest.finish();
-}
-
-/** Receives MessageEvents to this window. */
-// Count and check loads.
-function messageReceiver(evt) {
- is(evt.data, "message", "message data received from popup");
- if (evt.data != "message") {
- gPopup.close();
- window.removeEventListener("message", messageReceiver, false);
-
- finishTest();
- return;
- }
-
- // only run the test when all our children are done loading & setting cookies
- if (++gLoads == gExpectedLoads) {
- gPopup.close();
- window.removeEventListener("message", messageReceiver, false);
-
- runTest();
- }
-}
-
-// runTest() is run by messageReceiver().
-// Count and check cookies.
-function runTest() {
- // set a cookie from a domain of "localhost"
- document.cookie = "oh=hai";
-
- gScript.addMessageListener("getCookieCountAndClear:return", ({ count }) => {
- is(count, gExpectedCookies, "total number of cookies");
- finishTest();
- });
- gScript.sendAsyncMessage("getCookieCountAndClear");
-}
diff --git a/extensions/cookie/test/file_testloadflags.js b/extensions/cookie/test/file_testloadflags.js
deleted file mode 100644
index 9cf4a15a6..000000000
--- a/extensions/cookie/test/file_testloadflags.js
+++ /dev/null
@@ -1,104 +0,0 @@
-const SCRIPT_URL = SimpleTest.getTestFileURL('file_testloadflags_chromescript.js');
-
-var gExpectedCookies;
-var gExpectedHeaders;
-var gExpectedLoads;
-
-var gObs;
-var gPopup;
-
-var gHeaders = 0;
-var gLoads = 0;
-
-// setupTest() is run from 'onload='.
-function setupTest(uri, domain, cookies, loads, headers) {
- info("setupTest uri: " + uri + " domain: " + domain + " cookies: " + cookies +
- " loads: " + loads + " headers: " + headers);
-
- SimpleTest.waitForExplicitFinish();
-
- var prefSet = new Promise(resolve => {
- SpecialPowers.pushPrefEnv({ set: [["network.cookie.cookieBehavior", 1]] }, resolve);
- });
-
- gExpectedCookies = cookies;
- gExpectedLoads = loads;
- gExpectedHeaders = headers;
-
- gScript = SpecialPowers.loadChromeScript(SCRIPT_URL);
- gScript.addMessageListener("info", ({ str }) => info(str));
- gScript.addMessageListener("ok", ({ c, m }) => ok(c, m));
- gScript.addMessageListener("observer:gotCookie", ({ cookie, uri }) => {
- isnot(cookie.indexOf("oh=hai"), -1,
- "cookie 'oh=hai' is in header for " + uri);
- ++gHeaders;
- });
-
- var scriptReady = new Promise(resolve => {
- gScript.addMessageListener("init:return", resolve);
- gScript.sendAsyncMessage("init", { domain });
- });
-
- // Listen for MessageEvents.
- window.addEventListener("message", messageReceiver, false);
-
- Promise.all([ prefSet, scriptReady ]).then(() => {
- // load a window which contains an iframe; each will attempt to set
- // cookies from their respective domains.
- gPopup = window.open(uri, 'hai', 'width=100,height=100');
- });
-}
-
-function finishTest()
-{
- gScript.addMessageListener("shutdown:return", () => {
- gScript.destroy();
- SimpleTest.finish();
- });
- gScript.sendAsyncMessage("shutdown");
-}
-
-/** Receives MessageEvents to this window. */
-// Count and check loads.
-function messageReceiver(evt)
-{
- ok(evt.data == "f_lf_i msg data img" || evt.data == "f_lf_i msg data page",
- "message data received from popup");
- if (evt.data == "f_lf_i msg data img") {
- info("message data received from popup for image");
- }
- if (evt.data == "f_lf_i msg data page") {
- info("message data received from popup for page");
- }
- if (evt.data != "f_lf_i msg data img" && evt.data != "f_lf_i msg data page") {
- info("got this message but don't know what it is " + evt.data);
- gPopup.close();
- window.removeEventListener("message", messageReceiver, false);
-
- finishTest();
- return;
- }
-
- // only run the test when all our children are done loading & setting cookies
- if (++gLoads == gExpectedLoads) {
- gPopup.close();
- window.removeEventListener("message", messageReceiver, false);
-
- runTest();
- }
-}
-
-// runTest() is run by messageReceiver().
-// Check headers, and count and check cookies.
-function runTest() {
- // set a cookie from a domain of "localhost"
- document.cookie = "o=noes";
-
- is(gHeaders, gExpectedHeaders, "number of observed request headers");
- gScript.addMessageListener("getCookieCount:return", ({ count }) => {
- is(count, gExpectedCookies, "total number of cookies");
- finishTest();
- });
-
- gScript.sendAsyncMessage("getCookieCount");
-}
diff --git a/extensions/cookie/test/file_testloadflags_chromescript.js b/extensions/cookie/test/file_testloadflags_chromescript.js
deleted file mode 100644
index 26eedacd9..000000000
--- a/extensions/cookie/test/file_testloadflags_chromescript.js
+++ /dev/null
@@ -1,112 +0,0 @@
-let { classes: Cc, interfaces: Ci } = Components;
-
-var gObs;
-
-function info(s) {
- sendAsyncMessage("info", { str: String(s) });
-}
-
-function ok(c, m) {
- sendAsyncMessage("ok", { c, m });
-}
-
-function is(a, b, m) {
- ok(Object.is(a, b), m + " (" + a + " === " + b + ")");
-}
-
-// Count headers.
-function obs() {
- info("adding observer");
-
- this.os = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
- this.os.addObserver(this, "http-on-modify-request", false);
-}
-
-obs.prototype = {
- observe(theSubject, theTopic, theData) {
- info("theSubject " + theSubject);
- info("theTopic " + theTopic);
- info("theData " + theData);
-
- var channel = theSubject.QueryInterface(Ci.nsIHttpChannel);
- info("channel " + channel);
- try {
- info("channel.URI " + channel.URI);
- info("channel.URI.spec " + channel.URI.spec);
- channel.visitRequestHeaders({
- visitHeader: function(aHeader, aValue) {
- info(aHeader + ": " + aValue);
- }});
- } catch (err) {
- ok(false, "catch error " + err);
- }
-
- // Ignore notifications we don't care about (like favicons)
- if (channel.URI.spec.indexOf(
- "http://example.org/tests/extensions/cookie/test/") == -1) {
- info("ignoring this one");
- return;
- }
-
- sendAsyncMessage("observer:gotCookie",
- { cookie: channel.getRequestHeader("Cookie"),
- uri: channel.URI.spec });
- },
-
- remove() {
- info("removing observer");
-
- this.os.removeObserver(this, "http-on-modify-request");
- this.os = null;
- }
-}
-
-function getCookieCount(cs) {
- let count = 0;
- let list = cs.enumerator;
- while (list.hasMoreElements()) {
- let cookie = list.getNext().QueryInterface(Ci.nsICookie);
- info("cookie: " + cookie);
- info("cookie host " + cookie.host + " path " + cookie.path + " name " + cookie.name +
- " value " + cookie.value + " isSecure " + cookie.isSecure + " expires " + cookie.expires);
- ++count;
- }
-
- return count;
-}
-
-addMessageListener("init", ({ domain }) => {
- let cs = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2);
-
- info("we are going to remove these cookies");
-
- let count = getCookieCount(cs);
- info(count + " cookies");
-
- cs.removeAll();
- cs.add(domain, "", "oh", "hai", false, false, true, Math.pow(2, 62), {});
- is(cs.countCookiesFromHost(domain), 1, "number of cookies for domain " + domain);
-
- gObs = new obs();
- sendAsyncMessage("init:return");
-});
-
-addMessageListener("getCookieCount", () => {
- let cs = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager);
- let count = getCookieCount(cs);
-
- cs.removeAll();
- sendAsyncMessage("getCookieCount:return", { count });
-});
-
-addMessageListener("shutdown", () => {
- gObs.remove();
-
- let cs = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2);
- cs.removeAll();
- sendAsyncMessage("shutdown:return");
-});
diff --git a/extensions/cookie/test/image1.png b/extensions/cookie/test/image1.png
deleted file mode 100644
index 272d67c0c..000000000
--- a/extensions/cookie/test/image1.png
+++ /dev/null
Binary files differ
diff --git a/extensions/cookie/test/image1.png^headers^ b/extensions/cookie/test/image1.png^headers^
deleted file mode 100644
index 2390289e0..000000000
--- a/extensions/cookie/test/image1.png^headers^
+++ /dev/null
@@ -1,3 +0,0 @@
-Cache-Control: no-store
-Set-Cookie: foo=bar
-
diff --git a/extensions/cookie/test/image2.png b/extensions/cookie/test/image2.png
deleted file mode 100644
index 272d67c0c..000000000
--- a/extensions/cookie/test/image2.png
+++ /dev/null
Binary files differ
diff --git a/extensions/cookie/test/image2.png^headers^ b/extensions/cookie/test/image2.png^headers^
deleted file mode 100644
index 6c0eea5ab..000000000
--- a/extensions/cookie/test/image2.png^headers^
+++ /dev/null
@@ -1,3 +0,0 @@
-Cache-Control: no-store
-Set-Cookie: foo2=bar2
-
diff --git a/extensions/cookie/test/mochitest.ini b/extensions/cookie/test/mochitest.ini
deleted file mode 100644
index 66c7038e9..000000000
--- a/extensions/cookie/test/mochitest.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[DEFAULT]
-support-files =
- beltzner.jpg
- beltzner.jpg^headers^
- damonbowling.jpg
- damonbowling.jpg^headers^
- file_chromecommon.js
- file_domain_hierarchy_inner.html
- file_domain_hierarchy_inner.html^headers^
- file_domain_hierarchy_inner_inner.html
- file_domain_hierarchy_inner_inner.html^headers^
- file_domain_hierarchy_inner_inner_inner.html
- file_domain_hierarchy_inner_inner_inner.html^headers^
- file_domain_inner.html
- file_domain_inner.html^headers^
- file_domain_inner_inner.html
- file_domain_inner_inner.html^headers^
- file_image_inner.html
- file_image_inner.html^headers^
- file_image_inner_inner.html
- file_image_inner_inner.html^headers^
- file_loadflags_inner.html
- file_loadflags_inner.html^headers^
- file_localhost_inner.html
- file_localhost_inner.html^headers^
- file_loopback_inner.html
- file_loopback_inner.html^headers^
- file_subdomain_inner.html
- file_subdomain_inner.html^headers^
- file_testcommon.js
- file_testloadflags.js
- file_testloadflags_chromescript.js
- image1.png
- image1.png^headers^
- image2.png
- image2.png^headers^
- test1.css
- test1.css^headers^
- test2.css
- test2.css^headers^
-
-[test_different_domain_in_hierarchy.html]
-[test_differentdomain.html]
-[test_image.html]
-[test_loadflags.html]
-[test_same_base_domain.html]
-[test_same_base_domain_2.html]
-[test_same_base_domain_3.html]
-[test_same_base_domain_4.html]
-[test_same_base_domain_5.html]
-[test_same_base_domain_6.html]
-[test_samedomain.html]
diff --git a/extensions/cookie/test/moz.build b/extensions/cookie/test/moz.build
deleted file mode 100644
index e79500ad4..000000000
--- a/extensions/cookie/test/moz.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-XPCSHELL_TESTS_MANIFESTS += [
- 'unit/xpcshell.ini',
- 'unit_ipc/xpcshell.ini',
-]
-
-MOCHITEST_MANIFESTS += ['mochitest.ini']
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
diff --git a/extensions/cookie/test/test1.css b/extensions/cookie/test/test1.css
deleted file mode 100644
index 139597f9c..000000000
--- a/extensions/cookie/test/test1.css
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/extensions/cookie/test/test1.css^headers^ b/extensions/cookie/test/test1.css^headers^
deleted file mode 100644
index 729babb5a..000000000
--- a/extensions/cookie/test/test1.css^headers^
+++ /dev/null
@@ -1,3 +0,0 @@
-Cache-Control: no-cache
-Set-Cookie: css=bar
-
diff --git a/extensions/cookie/test/test2.css b/extensions/cookie/test/test2.css
deleted file mode 100644
index 139597f9c..000000000
--- a/extensions/cookie/test/test2.css
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/extensions/cookie/test/test2.css^headers^ b/extensions/cookie/test/test2.css^headers^
deleted file mode 100644
index b12d32c72..000000000
--- a/extensions/cookie/test/test2.css^headers^
+++ /dev/null
@@ -1,3 +0,0 @@
-Cache-Control: no-cache
-Set-Cookie: css2=bar2
-
diff --git a/extensions/cookie/test/test_different_domain_in_hierarchy.html b/extensions/cookie/test/test_different_domain_in_hierarchy.html
deleted file mode 100644
index 61bc58539..000000000
--- a/extensions/cookie/test/test_different_domain_in_hierarchy.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test cookie requests from within a window hierarchy of different base domains</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_domain_hierarchy_inner.html', 3, 3)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_differentdomain.html b/extensions/cookie/test/test_differentdomain.html
deleted file mode 100644
index a74bceaf4..000000000
--- a/extensions/cookie/test/test_differentdomain.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://example.com/tests/extensions/cookie/test/file_domain_inner.html', 3, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_image.html b/extensions/cookie/test/test_image.html
deleted file mode 100644
index f39a19894..000000000
--- a/extensions/cookie/test/test_image.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_image_inner.html', 7, 3)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js"></script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_loadflags.html b/extensions/cookie/test/test_loadflags.html
deleted file mode 100644
index 3eea710f2..000000000
--- a/extensions/cookie/test/test_loadflags.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<!--
- *5 cookies: 1+1 from file_testloadflags.js, 2 from file_loadflags_inner.html + 1 from beltzner.jpg.
- *1 load: file_loadflags_inner.html.
- *2 headers: 1 for file_loadflags_inner.html + 1 for beltzner.jpg.
- -->
-<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_loadflags_inner.html', 'example.org', 5, 2, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testloadflags.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_same_base_domain.html b/extensions/cookie/test/test_same_base_domain.html
deleted file mode 100644
index acf020eb8..000000000
--- a/extensions/cookie/test/test_same_base_domain.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://test1.example.org/tests/extensions/cookie/test/file_domain_inner.html', 4, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_same_base_domain_2.html b/extensions/cookie/test/test_same_base_domain_2.html
deleted file mode 100644
index 44e400858..000000000
--- a/extensions/cookie/test/test_same_base_domain_2.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://test1.example.org/tests/extensions/cookie/test/file_subdomain_inner.html', 4, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_same_base_domain_3.html b/extensions/cookie/test/test_same_base_domain_3.html
deleted file mode 100644
index dfdbabde0..000000000
--- a/extensions/cookie/test/test_same_base_domain_3.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_subdomain_inner.html', 4, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_same_base_domain_4.html b/extensions/cookie/test/test_same_base_domain_4.html
deleted file mode 100644
index 0a4026fe2..000000000
--- a/extensions/cookie/test/test_same_base_domain_4.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://mochi.test:8888/tests/extensions/cookie/test/file_localhost_inner.html', 5, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_same_base_domain_5.html b/extensions/cookie/test/test_same_base_domain_5.html
deleted file mode 100644
index b603158c1..000000000
--- a/extensions/cookie/test/test_same_base_domain_5.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://sub1.test1.example.org/tests/extensions/cookie/test/file_subdomain_inner.html', 4, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_same_base_domain_6.html b/extensions/cookie/test/test_same_base_domain_6.html
deleted file mode 100644
index 9056739a6..000000000
--- a/extensions/cookie/test/test_same_base_domain_6.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://127.0.0.1:8888/tests/extensions/cookie/test/file_loopback_inner.html', 5, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/test_samedomain.html b/extensions/cookie/test/test_samedomain.html
deleted file mode 100644
index e8f623828..000000000
--- a/extensions/cookie/test/test_samedomain.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Cross domain access to properties</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_domain_inner.html', 4, 2)">
-<p id="display"></p>
-<pre id="test">
-<script class="testbody" type="text/javascript" src="file_testcommon.js">
-</script>
-</pre>
-</body>
-</html>
diff --git a/extensions/cookie/test/unit/cookieprompt.js b/extensions/cookie/test/unit/cookieprompt.js
deleted file mode 100644
index c0a17e006..000000000
--- a/extensions/cookie/test/unit/cookieprompt.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-var Ci = Components.interfaces;
-
-function CookiePromptService() {
-}
-
-CookiePromptService.prototype = {
- classID: Components.ID("{509b5540-c87c-11dd-ad8b-0800200c9a66}"),
- QueryInterface: XPCOMUtils.generateQI([Ci.nsICookiePromptService]),
-
- cookieDialog: function(parent, cookie, hostname,
- cookiesFromHost, changingCookie,
- rememberDecision) {
- return 0;
- }
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([CookiePromptService]);
diff --git a/extensions/cookie/test/unit/cookieprompt.manifest b/extensions/cookie/test/unit/cookieprompt.manifest
deleted file mode 100644
index 5a3bcad40..000000000
--- a/extensions/cookie/test/unit/cookieprompt.manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-component {509b5540-c87c-11dd-ad8b-0800200c9a66} cookieprompt.js
-contract @mozilla.org/embedcomp/cookieprompt-service;1 {509b5540-c87c-11dd-ad8b-0800200c9a66}
diff --git a/extensions/cookie/test/unit/head_cookies.js b/extensions/cookie/test/unit/head_cookies.js
deleted file mode 100644
index fe4c0a53d..000000000
--- a/extensions/cookie/test/unit/head_cookies.js
+++ /dev/null
@@ -1,570 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-Components.utils.import("resource://gre/modules/Services.jsm");
-Components.utils.import("resource://gre/modules/NetUtil.jsm");
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cr = Components.results;
-
-XPCOMUtils.defineLazyServiceGetter(Services, "cookies",
- "@mozilla.org/cookieService;1",
- "nsICookieService");
-XPCOMUtils.defineLazyServiceGetter(Services, "cookiemgr",
- "@mozilla.org/cookiemanager;1",
- "nsICookieManager2");
-
-XPCOMUtils.defineLazyServiceGetter(Services, "etld",
- "@mozilla.org/network/effective-tld-service;1",
- "nsIEffectiveTLDService");
-
-function do_check_throws(f, result, stack)
-{
- if (!stack)
- stack = Components.stack.caller;
-
- try {
- f();
- } catch (exc) {
- if (exc.result == result)
- return;
- do_throw("expected result " + result + ", caught " + exc, stack);
- }
- do_throw("expected result " + result + ", none thrown", stack);
-}
-
-// Helper to step a generator function and catch a StopIteration exception.
-function do_run_generator(generator)
-{
- try {
- generator.next();
- } catch (e) {
- if (e != StopIteration)
- do_throw("caught exception " + e, Components.stack.caller);
- }
-}
-
-// Helper to finish a generator function test.
-function do_finish_generator_test(generator)
-{
- do_execute_soon(function() {
- generator.close();
- do_test_finished();
- });
-}
-
-function _observer(generator, topic) {
- Services.obs.addObserver(this, topic, false);
-
- this.generator = generator;
- this.topic = topic;
-}
-
-_observer.prototype = {
- observe: function (subject, topic, data) {
- do_check_eq(this.topic, topic);
-
- Services.obs.removeObserver(this, this.topic);
-
- // Continue executing the generator function.
- if (this.generator)
- do_run_generator(this.generator);
-
- this.generator = null;
- this.topic = null;
- }
-}
-
-// Close the cookie database. If a generator is supplied, it will be invoked
-// once the close is complete.
-function do_close_profile(generator) {
- // Register an observer for db close.
- let obs = new _observer(generator, "cookie-db-closed");
-
- // Close the db.
- let service = Services.cookies.QueryInterface(Ci.nsIObserver);
- service.observe(null, "profile-before-change", "shutdown-persist");
-}
-
-// Load the cookie database. If a generator is supplied, it will be invoked
-// once the load is complete.
-function do_load_profile(generator) {
- // Register an observer for read completion.
- let obs = new _observer(generator, "cookie-db-read");
-
- // Load the profile.
- let service = Services.cookies.QueryInterface(Ci.nsIObserver);
- service.observe(null, "profile-do-change", "");
-}
-
-// Set a single session cookie using http and test the cookie count
-// against 'expected'
-function do_set_single_http_cookie(uri, channel, expected) {
- Services.cookies.setCookieStringFromHttp(uri, null, null, "foo=bar", null, channel);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri.host), expected);
-}
-
-// Set four cookies; with & without channel, http and non-http; and test
-// the cookie count against 'expected' after each set.
-function do_set_cookies(uri, channel, session, expected) {
- let suffix = session ? "" : "; max-age=1000";
-
- // without channel
- Services.cookies.setCookieString(uri, null, "oh=hai" + suffix, null);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri.host), expected[0]);
- // with channel
- Services.cookies.setCookieString(uri, null, "can=has" + suffix, channel);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri.host), expected[1]);
- // without channel, from http
- Services.cookies.setCookieStringFromHttp(uri, null, null, "cheez=burger" + suffix, null, null);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri.host), expected[2]);
- // with channel, from http
- Services.cookies.setCookieStringFromHttp(uri, null, null, "hot=dog" + suffix, null, channel);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri.host), expected[3]);
-}
-
-function do_count_enumerator(enumerator) {
- let i = 0;
- while (enumerator.hasMoreElements()) {
- enumerator.getNext();
- ++i;
- }
- return i;
-}
-
-function do_count_cookies() {
- return do_count_enumerator(Services.cookiemgr.enumerator);
-}
-
-// Helper object to store cookie data.
-function Cookie(name,
- value,
- host,
- path,
- expiry,
- lastAccessed,
- creationTime,
- isSession,
- isSecure,
- isHttpOnly)
-{
- this.name = name;
- this.value = value;
- this.host = host;
- this.path = path;
- this.expiry = expiry;
- this.lastAccessed = lastAccessed;
- this.creationTime = creationTime;
- this.isSession = isSession;
- this.isSecure = isSecure;
- this.isHttpOnly = isHttpOnly;
-
- let strippedHost = host.charAt(0) == '.' ? host.slice(1) : host;
-
- try {
- this.baseDomain = Services.etld.getBaseDomainFromHost(strippedHost);
- } catch (e) {
- if (e.result == Cr.NS_ERROR_HOST_IS_IP_ADDRESS ||
- e.result == Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS)
- this.baseDomain = strippedHost;
- }
-}
-
-// Object representing a database connection and associated statements. The
-// implementation varies depending on schema version.
-function CookieDatabaseConnection(file, schema)
-{
- // Manually generate a cookies.sqlite file with appropriate rows, columns,
- // and schema version. If it already exists, just set up our statements.
- let exists = file.exists();
-
- this.db = Services.storage.openDatabase(file);
- this.schema = schema;
- if (!exists)
- this.db.schemaVersion = schema;
-
- switch (schema) {
- case 1:
- {
- if (!exists) {
- this.db.executeSimpleSQL(
- "CREATE TABLE moz_cookies ( \
- id INTEGER PRIMARY KEY, \
- name TEXT, \
- value TEXT, \
- host TEXT, \
- path TEXT, \
- expiry INTEGER, \
- isSecure INTEGER, \
- isHttpOnly INTEGER)");
- }
-
- this.stmtInsert = this.db.createStatement(
- "INSERT INTO moz_cookies ( \
- id, \
- name, \
- value, \
- host, \
- path, \
- expiry, \
- isSecure, \
- isHttpOnly) \
- VALUES ( \
- :id, \
- :name, \
- :value, \
- :host, \
- :path, \
- :expiry, \
- :isSecure, \
- :isHttpOnly)");
-
- this.stmtDelete = this.db.createStatement(
- "DELETE FROM moz_cookies WHERE id = :id");
-
- break;
- }
-
- case 2:
- {
- if (!exists) {
- this.db.executeSimpleSQL(
- "CREATE TABLE moz_cookies ( \
- id INTEGER PRIMARY KEY, \
- name TEXT, \
- value TEXT, \
- host TEXT, \
- path TEXT, \
- expiry INTEGER, \
- lastAccessed INTEGER, \
- isSecure INTEGER, \
- isHttpOnly INTEGER)");
- }
-
- this.stmtInsert = this.db.createStatement(
- "INSERT OR REPLACE INTO moz_cookies ( \
- id, \
- name, \
- value, \
- host, \
- path, \
- expiry, \
- lastAccessed, \
- isSecure, \
- isHttpOnly) \
- VALUES ( \
- :id, \
- :name, \
- :value, \
- :host, \
- :path, \
- :expiry, \
- :lastAccessed, \
- :isSecure, \
- :isHttpOnly)");
-
- this.stmtDelete = this.db.createStatement(
- "DELETE FROM moz_cookies WHERE id = :id");
-
- this.stmtUpdate = this.db.createStatement(
- "UPDATE moz_cookies SET lastAccessed = :lastAccessed WHERE id = :id");
-
- break;
- }
-
- case 3:
- {
- if (!exists) {
- this.db.executeSimpleSQL(
- "CREATE TABLE moz_cookies ( \
- id INTEGER PRIMARY KEY, \
- baseDomain TEXT, \
- name TEXT, \
- value TEXT, \
- host TEXT, \
- path TEXT, \
- expiry INTEGER, \
- lastAccessed INTEGER, \
- isSecure INTEGER, \
- isHttpOnly INTEGER)");
-
- this.db.executeSimpleSQL(
- "CREATE INDEX moz_basedomain ON moz_cookies (baseDomain)");
- }
-
- this.stmtInsert = this.db.createStatement(
- "INSERT INTO moz_cookies ( \
- id, \
- baseDomain, \
- name, \
- value, \
- host, \
- path, \
- expiry, \
- lastAccessed, \
- isSecure, \
- isHttpOnly) \
- VALUES ( \
- :id, \
- :baseDomain, \
- :name, \
- :value, \
- :host, \
- :path, \
- :expiry, \
- :lastAccessed, \
- :isSecure, \
- :isHttpOnly)");
-
- this.stmtDelete = this.db.createStatement(
- "DELETE FROM moz_cookies WHERE id = :id");
-
- this.stmtUpdate = this.db.createStatement(
- "UPDATE moz_cookies SET lastAccessed = :lastAccessed WHERE id = :id");
-
- break;
- }
-
- case 4:
- {
- if (!exists) {
- this.db.executeSimpleSQL(
- "CREATE TABLE moz_cookies ( \
- id INTEGER PRIMARY KEY, \
- baseDomain TEXT, \
- name TEXT, \
- value TEXT, \
- host TEXT, \
- path TEXT, \
- expiry INTEGER, \
- lastAccessed INTEGER, \
- creationTime INTEGER, \
- isSecure INTEGER, \
- isHttpOnly INTEGER \
- CONSTRAINT moz_uniqueid UNIQUE (name, host, path))");
-
- this.db.executeSimpleSQL(
- "CREATE INDEX moz_basedomain ON moz_cookies (baseDomain)");
-
- this.db.executeSimpleSQL(
- "PRAGMA journal_mode = WAL");
- }
-
- this.stmtInsert = this.db.createStatement(
- "INSERT INTO moz_cookies ( \
- baseDomain, \
- name, \
- value, \
- host, \
- path, \
- expiry, \
- lastAccessed, \
- creationTime, \
- isSecure, \
- isHttpOnly) \
- VALUES ( \
- :baseDomain, \
- :name, \
- :value, \
- :host, \
- :path, \
- :expiry, \
- :lastAccessed, \
- :creationTime, \
- :isSecure, \
- :isHttpOnly)");
-
- this.stmtDelete = this.db.createStatement(
- "DELETE FROM moz_cookies \
- WHERE name = :name AND host = :host AND path = :path");
-
- this.stmtUpdate = this.db.createStatement(
- "UPDATE moz_cookies SET lastAccessed = :lastAccessed \
- WHERE name = :name AND host = :host AND path = :path");
-
- break;
- }
-
- default:
- do_throw("unrecognized schemaVersion!");
- }
-}
-
-CookieDatabaseConnection.prototype =
-{
- insertCookie: function(cookie)
- {
- if (!(cookie instanceof Cookie))
- do_throw("not a cookie");
-
- switch (this.schema)
- {
- case 1:
- this.stmtInsert.bindByName("id", cookie.creationTime);
- this.stmtInsert.bindByName("name", cookie.name);
- this.stmtInsert.bindByName("value", cookie.value);
- this.stmtInsert.bindByName("host", cookie.host);
- this.stmtInsert.bindByName("path", cookie.path);
- this.stmtInsert.bindByName("expiry", cookie.expiry);
- this.stmtInsert.bindByName("isSecure", cookie.isSecure);
- this.stmtInsert.bindByName("isHttpOnly", cookie.isHttpOnly);
- break;
-
- case 2:
- this.stmtInsert.bindByName("id", cookie.creationTime);
- this.stmtInsert.bindByName("name", cookie.name);
- this.stmtInsert.bindByName("value", cookie.value);
- this.stmtInsert.bindByName("host", cookie.host);
- this.stmtInsert.bindByName("path", cookie.path);
- this.stmtInsert.bindByName("expiry", cookie.expiry);
- this.stmtInsert.bindByName("lastAccessed", cookie.lastAccessed);
- this.stmtInsert.bindByName("isSecure", cookie.isSecure);
- this.stmtInsert.bindByName("isHttpOnly", cookie.isHttpOnly);
- break;
-
- case 3:
- this.stmtInsert.bindByName("id", cookie.creationTime);
- this.stmtInsert.bindByName("baseDomain", cookie.baseDomain);
- this.stmtInsert.bindByName("name", cookie.name);
- this.stmtInsert.bindByName("value", cookie.value);
- this.stmtInsert.bindByName("host", cookie.host);
- this.stmtInsert.bindByName("path", cookie.path);
- this.stmtInsert.bindByName("expiry", cookie.expiry);
- this.stmtInsert.bindByName("lastAccessed", cookie.lastAccessed);
- this.stmtInsert.bindByName("isSecure", cookie.isSecure);
- this.stmtInsert.bindByName("isHttpOnly", cookie.isHttpOnly);
- break;
-
- case 4:
- this.stmtInsert.bindByName("baseDomain", cookie.baseDomain);
- this.stmtInsert.bindByName("name", cookie.name);
- this.stmtInsert.bindByName("value", cookie.value);
- this.stmtInsert.bindByName("host", cookie.host);
- this.stmtInsert.bindByName("path", cookie.path);
- this.stmtInsert.bindByName("expiry", cookie.expiry);
- this.stmtInsert.bindByName("lastAccessed", cookie.lastAccessed);
- this.stmtInsert.bindByName("creationTime", cookie.creationTime);
- this.stmtInsert.bindByName("isSecure", cookie.isSecure);
- this.stmtInsert.bindByName("isHttpOnly", cookie.isHttpOnly);
- break;
-
- default:
- do_throw("unrecognized schemaVersion!");
- }
-
- do_execute_stmt(this.stmtInsert);
- },
-
- deleteCookie: function(cookie)
- {
- if (!(cookie instanceof Cookie))
- do_throw("not a cookie");
-
- switch (this.db.schemaVersion)
- {
- case 1:
- case 2:
- case 3:
- this.stmtDelete.bindByName("id", cookie.creationTime);
- break;
-
- case 4:
- this.stmtDelete.bindByName("name", cookie.name);
- this.stmtDelete.bindByName("host", cookie.host);
- this.stmtDelete.bindByName("path", cookie.path);
- break;
-
- default:
- do_throw("unrecognized schemaVersion!");
- }
-
- do_execute_stmt(this.stmtDelete);
- },
-
- updateCookie: function(cookie)
- {
- if (!(cookie instanceof Cookie))
- do_throw("not a cookie");
-
- switch (this.db.schemaVersion)
- {
- case 1:
- do_throw("can't update a schema 1 cookie!");
-
- case 2:
- case 3:
- this.stmtUpdate.bindByName("id", cookie.creationTime);
- this.stmtUpdate.bindByName("lastAccessed", cookie.lastAccessed);
- break;
-
- case 4:
- this.stmtDelete.bindByName("name", cookie.name);
- this.stmtDelete.bindByName("host", cookie.host);
- this.stmtDelete.bindByName("path", cookie.path);
- this.stmtUpdate.bindByName("lastAccessed", cookie.lastAccessed);
- break;
-
- default:
- do_throw("unrecognized schemaVersion!");
- }
-
- do_execute_stmt(this.stmtUpdate);
- },
-
- close: function()
- {
- this.stmtInsert.finalize();
- this.stmtDelete.finalize();
- if (this.stmtUpdate)
- this.stmtUpdate.finalize();
- this.db.close();
-
- this.stmtInsert = null;
- this.stmtDelete = null;
- this.stmtUpdate = null;
- this.db = null;
- }
-}
-
-function do_get_cookie_file(profile)
-{
- let file = profile.clone();
- file.append("cookies.sqlite");
- return file;
-}
-
-// Count the cookies from 'host' in a database. If 'host' is null, count all
-// cookies.
-function do_count_cookies_in_db(connection, host)
-{
- let select = null;
- if (host) {
- select = connection.createStatement(
- "SELECT COUNT(1) FROM moz_cookies WHERE host = :host");
- select.bindByName("host", host);
- } else {
- select = connection.createStatement(
- "SELECT COUNT(1) FROM moz_cookies");
- }
-
- select.executeStep();
- let result = select.getInt32(0);
- select.reset();
- select.finalize();
- return result;
-}
-
-// Execute 'stmt', ensuring that we reset it if it throws.
-function do_execute_stmt(stmt)
-{
- try {
- stmt.executeStep();
- stmt.reset();
- } catch (e) {
- stmt.reset();
- throw e;
- }
-}
diff --git a/extensions/cookie/test/unit/test_bug526789.js b/extensions/cookie/test/unit/test_bug526789.js
deleted file mode 100644
index 624044577..000000000
--- a/extensions/cookie/test/unit/test_bug526789.js
+++ /dev/null
@@ -1,236 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function run_test() {
- var cs = Cc["@mozilla.org/cookieService;1"].getService(Ci.nsICookieService);
- var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
- var expiry = (Date.now() + 1000) * 1000;
-
- cm.removeAll();
-
- // Allow all cookies.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- // test that variants of 'baz.com' get normalized appropriately, but that
- // malformed hosts are rejected
- cm.add("baz.com", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("baz.com"), 1);
- do_check_eq(cm.countCookiesFromHost("BAZ.com"), 1);
- do_check_eq(cm.countCookiesFromHost(".baz.com"), 1);
- do_check_eq(cm.countCookiesFromHost("baz.com."), 0);
- do_check_eq(cm.countCookiesFromHost(".baz.com."), 0);
- do_check_throws(function() {
- cm.countCookiesFromHost("baz.com..");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.countCookiesFromHost("baz..com");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.countCookiesFromHost("..baz.com");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- cm.remove("BAZ.com.", "foo", "/", false, {});
- do_check_eq(cm.countCookiesFromHost("baz.com"), 1);
- cm.remove("baz.com", "foo", "/", false, {});
- do_check_eq(cm.countCookiesFromHost("baz.com"), 0);
-
- // Test that 'baz.com' and 'baz.com.' are treated differently
- cm.add("baz.com.", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("baz.com"), 0);
- do_check_eq(cm.countCookiesFromHost("BAZ.com"), 0);
- do_check_eq(cm.countCookiesFromHost(".baz.com"), 0);
- do_check_eq(cm.countCookiesFromHost("baz.com."), 1);
- do_check_eq(cm.countCookiesFromHost(".baz.com."), 1);
- cm.remove("baz.com", "foo", "/", false, {});
- do_check_eq(cm.countCookiesFromHost("baz.com."), 1);
- cm.remove("baz.com.", "foo", "/", false, {});
- do_check_eq(cm.countCookiesFromHost("baz.com."), 0);
-
- // test that domain cookies are illegal for IP addresses, aliases such as
- // 'localhost', and eTLD's such as 'co.uk'
- cm.add("192.168.0.1", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("192.168.0.1"), 1);
- do_check_eq(cm.countCookiesFromHost("192.168.0.1."), 0);
- do_check_throws(function() {
- cm.countCookiesFromHost(".192.168.0.1");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.countCookiesFromHost(".192.168.0.1.");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- cm.add("localhost", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("localhost"), 1);
- do_check_eq(cm.countCookiesFromHost("localhost."), 0);
- do_check_throws(function() {
- cm.countCookiesFromHost(".localhost");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.countCookiesFromHost(".localhost.");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- cm.add("co.uk", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("co.uk"), 1);
- do_check_eq(cm.countCookiesFromHost("co.uk."), 0);
- do_check_throws(function() {
- cm.countCookiesFromHost(".co.uk");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.countCookiesFromHost(".co.uk.");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- cm.removeAll();
-
- var uri = NetUtil.newURI("http://baz.com/");
- do_check_eq(uri.asciiHost, "baz.com");
- cs.setCookieString(uri, null, "foo=bar", null);
-
- do_check_eq(cs.getCookieString(uri, null), "foo=bar");
-
- do_check_eq(cm.countCookiesFromHost(""), 0);
- do_check_throws(function() {
- cm.countCookiesFromHost(".");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.countCookiesFromHost("..");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- var e = cm.getCookiesFromHost("", {});
- do_check_false(e.hasMoreElements());
- do_check_throws(function() {
- cm.getCookiesFromHost(".", {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.getCookiesFromHost("..", {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- e = cm.getCookiesFromHost("baz.com", {});
- do_check_true(e.hasMoreElements());
- do_check_eq(e.getNext().QueryInterface(Ci.nsICookie2).name, "foo");
- do_check_false(e.hasMoreElements());
- e = cm.getCookiesFromHost("", {});
- do_check_false(e.hasMoreElements());
- do_check_throws(function() {
- cm.getCookiesFromHost(".", {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_throws(function() {
- cm.getCookiesFromHost("..", {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- cm.removeAll();
-
- // test that an empty file:// host works
- emptyuri = NetUtil.newURI("file:///");
- do_check_eq(emptyuri.asciiHost, "");
- do_check_eq(NetUtil.newURI("file://./").asciiHost, "");
- do_check_eq(NetUtil.newURI("file://foo.bar/").asciiHost, "");
- cs.setCookieString(emptyuri, null, "foo2=bar", null);
- do_check_eq(getCookieCount(), 1);
- cs.setCookieString(emptyuri, null, "foo3=bar; domain=", null);
- do_check_eq(getCookieCount(), 2);
- cs.setCookieString(emptyuri, null, "foo4=bar; domain=.", null);
- do_check_eq(getCookieCount(), 2);
- cs.setCookieString(emptyuri, null, "foo5=bar; domain=bar.com", null);
- do_check_eq(getCookieCount(), 2);
-
- do_check_eq(cs.getCookieString(emptyuri, null), "foo2=bar; foo3=bar");
-
- do_check_eq(cm.countCookiesFromHost("baz.com"), 0);
- do_check_eq(cm.countCookiesFromHost(""), 2);
- do_check_throws(function() {
- cm.countCookiesFromHost(".");
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- e = cm.getCookiesFromHost("baz.com", {});
- do_check_false(e.hasMoreElements());
- e = cm.getCookiesFromHost("", {});
- do_check_true(e.hasMoreElements());
- e.getNext();
- do_check_true(e.hasMoreElements());
- e.getNext();
- do_check_false(e.hasMoreElements());
- do_check_throws(function() {
- cm.getCookiesFromHost(".", {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- cm.removeAll();
-
- // test that an empty host to add() or remove() works,
- // but a host of '.' doesn't
- cm.add("", "/", "foo2", "bar", false, false, true, expiry, {});
- do_check_eq(getCookieCount(), 1);
- do_check_throws(function() {
- cm.add(".", "/", "foo3", "bar", false, false, true, expiry, {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
- do_check_eq(getCookieCount(), 1);
-
- cm.remove("", "foo2", "/", false, {});
- do_check_eq(getCookieCount(), 0);
- do_check_throws(function() {
- cm.remove(".", "foo3", "/", false, {});
- }, Cr.NS_ERROR_ILLEGAL_VALUE);
-
- // test that the 'domain' attribute accepts a leading dot for IP addresses,
- // aliases such as 'localhost', and eTLD's such as 'co.uk'; but that the
- // resulting cookie is for the exact host only.
- testDomainCookie("http://192.168.0.1/", "192.168.0.1");
- testDomainCookie("http://localhost/", "localhost");
- testDomainCookie("http://co.uk/", "co.uk");
-
- // Test that trailing dots are treated differently for purposes of the
- // 'domain' attribute when using setCookieString.
- testTrailingDotCookie("http://localhost", "localhost");
- testTrailingDotCookie("http://foo.com", "foo.com");
-
- cm.removeAll();
-}
-
-function getCookieCount() {
- var count = 0;
- var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
- var enumerator = cm.enumerator;
- while (enumerator.hasMoreElements()) {
- if (!(enumerator.getNext() instanceof Ci.nsICookie2))
- throw new Error("not a cookie");
- ++count;
- }
- return count;
-}
-
-function testDomainCookie(uriString, domain) {
- var cs = Cc["@mozilla.org/cookieService;1"].getService(Ci.nsICookieService);
- var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
-
- cm.removeAll();
-
- var uri = NetUtil.newURI(uriString);
- cs.setCookieString(uri, null, "foo=bar; domain=" + domain, null);
- var e = cm.getCookiesFromHost(domain, {});
- do_check_true(e.hasMoreElements());
- do_check_eq(e.getNext().QueryInterface(Ci.nsICookie2).host, domain);
- cm.removeAll();
-
- cs.setCookieString(uri, null, "foo=bar; domain=." + domain, null);
- e = cm.getCookiesFromHost(domain, {});
- do_check_true(e.hasMoreElements());
- do_check_eq(e.getNext().QueryInterface(Ci.nsICookie2).host, domain);
- cm.removeAll();
-}
-
-function testTrailingDotCookie(uriString, domain) {
- var cs = Cc["@mozilla.org/cookieService;1"].getService(Ci.nsICookieService);
- var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
-
- cm.removeAll();
-
- var uri = NetUtil.newURI(uriString);
- cs.setCookieString(uri, null, "foo=bar; domain=" + domain + ".", null);
- do_check_eq(cm.countCookiesFromHost(domain), 0);
- do_check_eq(cm.countCookiesFromHost(domain + "."), 0);
- cm.removeAll();
-
- uri = NetUtil.newURI(uriString + ".");
- cs.setCookieString(uri, null, "foo=bar; domain=" + domain, null);
- do_check_eq(cm.countCookiesFromHost(domain), 0);
- do_check_eq(cm.countCookiesFromHost(domain + "."), 0);
- cm.removeAll();
-}
-
diff --git a/extensions/cookie/test/unit/test_bug650522.js b/extensions/cookie/test/unit/test_bug650522.js
deleted file mode 100644
index 1d99cb233..000000000
--- a/extensions/cookie/test/unit/test_bug650522.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-Components.utils.import("resource://gre/modules/NetUtil.jsm");
-
-function run_test() {
- var cs = Cc["@mozilla.org/cookieService;1"].getService(Ci.nsICookieService);
- var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
- var expiry = (Date.now() + 1000) * 1000;
-
- // Test our handling of host names with a single character at the beginning
- // followed by a dot.
- cm.add("e.mail.com", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("e.mail.com"), 1);
- do_check_eq(cs.getCookieString(NetUtil.newURI("http://e.mail.com"), null), "foo=bar");
-}
diff --git a/extensions/cookie/test/unit/test_bug667087.js b/extensions/cookie/test/unit/test_bug667087.js
deleted file mode 100644
index 2400dea51..000000000
--- a/extensions/cookie/test/unit/test_bug667087.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-Components.utils.import("resource://gre/modules/NetUtil.jsm");
-
-function run_test() {
- var cs = Cc["@mozilla.org/cookieService;1"].getService(Ci.nsICookieService);
- var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
- var expiry = (Date.now() + 1000) * 1000;
-
- // Test our handling of host names with a single character consisting only
- // of a single character
- cm.add("a", "/", "foo", "bar", false, false, true, expiry, {});
- do_check_eq(cm.countCookiesFromHost("a"), 1);
- do_check_eq(cs.getCookieString(NetUtil.newURI("http://a"), null), "foo=bar");
-}
diff --git a/extensions/cookie/test/unit/test_cookies_async_failure.js b/extensions/cookie/test/unit/test_cookies_async_failure.js
deleted file mode 100644
index 628553a4e..000000000
--- a/extensions/cookie/test/unit/test_cookies_async_failure.js
+++ /dev/null
@@ -1,600 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test the various ways opening a cookie database can fail in an asynchronous
-// (i.e. after synchronous initialization) manner, and that the database is
-// renamed and recreated under each circumstance. These circumstances are, in no
-// particular order:
-//
-// 1) A write operation failing after the database has been read in.
-// 2) Asynchronous read failure due to a corrupt database.
-// 3) Synchronous read failure due to a corrupt database, when reading:
-// a) a single base domain;
-// b) the entire database.
-// 4) Asynchronous read failure, followed by another failure during INSERT but
-// before the database closes for rebuilding. (The additional error should be
-// ignored.)
-// 5) Asynchronous read failure, followed by an INSERT failure during rebuild.
-// This should result in an abort of the database rebuild; the partially-
-// built database should be moved to 'cookies.sqlite.bak-rebuild'.
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- do_run_generator(test_generator);
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- this.profile = do_get_profile();
-
- // Allow all cookies.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- // Get the cookie file and the backup file.
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
-
- // Create a cookie object for testing.
- this.now = Date.now() * 1000;
- this.futureExpiry = Math.round(this.now / 1e6 + 1000);
- this.cookie = new Cookie("oh", "hai", "bar.com", "/", this.futureExpiry,
- this.now, this.now, false, false, false);
-
- this.sub_generator = run_test_1(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_2(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_3(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_4(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_5(test_generator);
- sub_generator.next();
- yield;
-
- finish_test();
- return;
-}
-
-function do_get_backup_file(profile)
-{
- let file = profile.clone();
- file.append("cookies.sqlite.bak");
- return file;
-}
-
-function do_get_rebuild_backup_file(profile)
-{
- let file = profile.clone();
- file.append("cookies.sqlite.bak-rebuild");
- return file;
-}
-
-function do_corrupt_db(file)
-{
- // Sanity check: the database size should be larger than 450k, since we've
- // written about 460k of data. If it's not, let's make it obvious now.
- let size = file.fileSize;
- do_check_true(size > 450e3);
-
- // Corrupt the database by writing bad data to the end of the file. We
- // assume that the important metadata -- table structure etc -- is stored
- // elsewhere, and that doing this will not cause synchronous failure when
- // initializing the database connection. This is totally empirical --
- // overwriting between 1k and 100k of live data seems to work. (Note that the
- // database file will be larger than the actual content requires, since the
- // cookie service uses a large growth increment. So we calculate the offset
- // based on the expected size of the content, not just the file size.)
- let ostream = Cc["@mozilla.org/network/file-output-stream;1"].
- createInstance(Ci.nsIFileOutputStream);
- ostream.init(file, 2, -1, 0);
- let sstream = ostream.QueryInterface(Ci.nsISeekableStream);
- let n = size - 450e3 + 20e3;
- sstream.seek(Ci.nsISeekableStream.NS_SEEK_SET, size - n);
- for (let i = 0; i < n; ++i) {
- ostream.write("a", 1);
- }
- ostream.flush();
- ostream.close();
-
- do_check_eq(file.clone().fileSize, size);
- return size;
-}
-
-function run_test_1(generator)
-{
- // Load the profile and populate it.
- let uri = NetUtil.newURI("http://foo.com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Open a database connection now, before we load the profile and begin
- // asynchronous write operations. In order to tell when the async delete
- // statement has completed, we do something tricky: open a schema 2 connection
- // and add a cookie with null baseDomain. We can then wait until we see it
- // deleted in the new database.
- let db2 = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
- db2.db.executeSimpleSQL("INSERT INTO moz_cookies (baseDomain) VALUES (NULL)");
- db2.close();
- let db = new CookieDatabaseConnection(do_get_cookie_file(profile), 4);
- do_check_eq(do_count_cookies_in_db(db.db), 2);
-
- // Load the profile, and wait for async read completion...
- do_load_profile(sub_generator);
- yield;
-
- // ... and the DELETE statement to finish.
- while (do_count_cookies_in_db(db.db) == 2) {
- do_execute_soon(function() {
- do_run_generator(sub_generator);
- });
- yield;
- }
- do_check_eq(do_count_cookies_in_db(db.db), 1);
-
- // Insert a row.
- db.insertCookie(cookie);
- db.close();
-
- // Attempt to insert a cookie with the same (name, host, path) triplet.
- Services.cookiemgr.add(cookie.host, cookie.path, cookie.name, "hallo",
- cookie.isSecure, cookie.isHttpOnly, cookie.isSession, cookie.expiry, {});
-
- // Check that the cookie service accepted the new cookie.
- do_check_eq(Services.cookiemgr.countCookiesFromHost(cookie.host), 1);
-
- // Wait for the cookie service to rename the old database and rebuild.
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
- do_execute_soon(function() { do_run_generator(sub_generator); });
- yield;
-
- // At this point, the cookies should still be in memory.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(cookie.host), 1);
- do_check_eq(do_count_cookies(), 2);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the original database was renamed, and that it contains the
- // original cookie.
- do_check_true(do_get_backup_file(profile).exists());
- let backupdb = Services.storage.openDatabase(do_get_backup_file(profile));
- do_check_eq(do_count_cookies_in_db(backupdb, "foo.com"), 1);
- backupdb.close();
-
- // Load the profile, and check that it contains the new cookie.
- do_load_profile();
-
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 1);
- let enumerator = Services.cookiemgr.getCookiesFromHost(cookie.host, {});
- do_check_true(enumerator.hasMoreElements());
- let dbcookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- do_check_eq(dbcookie.value, "hallo");
- do_check_false(enumerator.hasMoreElements());
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Clean up.
- do_get_cookie_file(profile).remove(false);
- do_get_backup_file(profile).remove(false);
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
- do_run_generator(generator);
-}
-
-function run_test_2(generator)
-{
- // Load the profile and populate it.
- do_load_profile();
- for (let i = 0; i < 3000; ++i) {
- let uri = NetUtil.newURI("http://" + i + ".com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
- }
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Corrupt the database file.
- let size = do_corrupt_db(do_get_cookie_file(profile));
-
- // Load the profile.
- do_load_profile();
-
- // At this point, the database connection should be open. Ensure that it
- // succeeded.
- do_check_false(do_get_backup_file(profile).exists());
-
- // Synchronously read in the first cookie. This will cause it to go into the
- // cookie table, whereupon it will be written out during database rebuild.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
-
- // Wait for the asynchronous read to choke, at which point the backup file
- // will be created and the database rebuilt.
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
- do_execute_soon(function() { do_run_generator(sub_generator); });
- yield;
-
- // At this point, the cookies should still be in memory.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
- do_check_eq(do_count_cookies(), 1);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the original database was renamed.
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
- let db = Services.storage.openDatabase(do_get_cookie_file(profile));
- do_check_eq(do_count_cookies_in_db(db, "0.com"), 1);
- db.close();
-
- // Load the profile, and check that it contains the new cookie.
- do_load_profile();
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
- do_check_eq(do_count_cookies(), 1);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Clean up.
- do_get_cookie_file(profile).remove(false);
- do_get_backup_file(profile).remove(false);
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
- do_run_generator(generator);
-}
-
-function run_test_3(generator)
-{
- // Set the maximum cookies per base domain limit to a large value, so that
- // corrupting the database is easier.
- Services.prefs.setIntPref("network.cookie.maxPerHost", 3000);
-
- // Load the profile and populate it.
- do_load_profile();
- for (let i = 0; i < 10; ++i) {
- let uri = NetUtil.newURI("http://hither.com/");
- Services.cookies.setCookieString(uri, null, "oh" + i + "=hai; max-age=1000",
- null);
- }
- for (let i = 10; i < 3000; ++i) {
- let uri = NetUtil.newURI("http://haithur.com/");
- Services.cookies.setCookieString(uri, null, "oh" + i + "=hai; max-age=1000",
- null);
- }
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Corrupt the database file.
- let size = do_corrupt_db(do_get_cookie_file(profile));
-
- // Load the profile.
- do_load_profile();
-
- // At this point, the database connection should be open. Ensure that it
- // succeeded.
- do_check_false(do_get_backup_file(profile).exists());
-
- // Synchronously read in the cookies for our two domains. The first should
- // succeed, but the second should fail midway through, resulting in none of
- // those cookies being present.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("hither.com"), 10);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("haithur.com"), 0);
-
- // Wait for the backup file to be created and the database rebuilt.
- do_check_false(do_get_backup_file(profile).exists());
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
- do_execute_soon(function() { do_run_generator(sub_generator); });
- yield;
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
- let db = Services.storage.openDatabase(do_get_cookie_file(profile));
- do_check_eq(do_count_cookies_in_db(db, "hither.com"), 10);
- do_check_eq(do_count_cookies_in_db(db), 10);
- db.close();
-
- // Check that the original database was renamed.
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
-
- // Rename it back, and try loading the entire database synchronously.
- do_get_backup_file(profile).moveTo(null, "cookies.sqlite");
- do_load_profile();
-
- // At this point, the database connection should be open. Ensure that it
- // succeeded.
- do_check_false(do_get_backup_file(profile).exists());
-
- // Synchronously read in everything.
- do_check_eq(do_count_cookies(), 0);
-
- // Wait for the backup file to be created and the database rebuilt.
- do_check_false(do_get_backup_file(profile).exists());
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
- do_execute_soon(function() { do_run_generator(sub_generator); });
- yield;
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
- db = Services.storage.openDatabase(do_get_cookie_file(profile));
- do_check_eq(do_count_cookies_in_db(db), 0);
- db.close();
-
- // Check that the original database was renamed.
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
-
- // Clean up.
- do_get_cookie_file(profile).remove(false);
- do_get_backup_file(profile).remove(false);
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
- do_run_generator(generator);
-}
-
-function run_test_4(generator)
-{
- // Load the profile and populate it.
- do_load_profile();
- for (let i = 0; i < 3000; ++i) {
- let uri = NetUtil.newURI("http://" + i + ".com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
- }
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Corrupt the database file.
- let size = do_corrupt_db(do_get_cookie_file(profile));
-
- // Load the profile.
- do_load_profile();
-
- // At this point, the database connection should be open. Ensure that it
- // succeeded.
- do_check_false(do_get_backup_file(profile).exists());
-
- // Synchronously read in the first cookie. This will cause it to go into the
- // cookie table, whereupon it will be written out during database rebuild.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
-
- // Queue up an INSERT for the same base domain. This should also go into
- // memory and be written out during database rebuild.
- let uri = NetUtil.newURI("http://0.com/");
- Services.cookies.setCookieString(uri, null, "oh2=hai; max-age=1000", null);
-
- // Wait for the asynchronous read to choke and the insert to fail shortly
- // thereafter, at which point the backup file will be created and the database
- // rebuilt.
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
- do_execute_soon(function() { do_run_generator(sub_generator); });
- yield;
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the original database was renamed.
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
- let db = Services.storage.openDatabase(do_get_cookie_file(profile));
- do_check_eq(do_count_cookies_in_db(db, "0.com"), 2);
- db.close();
-
- // Load the profile, and check that it contains the new cookie.
- do_load_profile();
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 2);
- do_check_eq(do_count_cookies(), 2);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Clean up.
- do_get_cookie_file(profile).remove(false);
- do_get_backup_file(profile).remove(false);
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
- do_run_generator(generator);
-}
-
-function run_test_4(generator)
-{
- // Load the profile and populate it.
- do_load_profile();
- for (let i = 0; i < 3000; ++i) {
- let uri = NetUtil.newURI("http://" + i + ".com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
- }
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Corrupt the database file.
- let size = do_corrupt_db(do_get_cookie_file(profile));
-
- // Load the profile.
- do_load_profile();
-
- // At this point, the database connection should be open. Ensure that it
- // succeeded.
- do_check_false(do_get_backup_file(profile).exists());
-
- // Synchronously read in the first cookie. This will cause it to go into the
- // cookie table, whereupon it will be written out during database rebuild.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
-
- // Queue up an INSERT for the same base domain. This should also go into
- // memory and be written out during database rebuild.
- let uri = NetUtil.newURI("http://0.com/");
- Services.cookies.setCookieString(uri, null, "oh2=hai; max-age=1000", null);
-
- // Wait for the asynchronous read to choke and the insert to fail shortly
- // thereafter, at which point the backup file will be created and the database
- // rebuilt.
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
- do_execute_soon(function() { do_run_generator(sub_generator); });
- yield;
-
- // At this point, the cookies should still be in memory.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 2);
- do_check_eq(do_count_cookies(), 2);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the original database was renamed.
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
- let db = Services.storage.openDatabase(do_get_cookie_file(profile));
- do_check_eq(do_count_cookies_in_db(db, "0.com"), 2);
- db.close();
-
- // Load the profile, and check that it contains the new cookie.
- do_load_profile();
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 2);
- do_check_eq(do_count_cookies(), 2);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Clean up.
- do_get_cookie_file(profile).remove(false);
- do_get_backup_file(profile).remove(false);
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
- do_run_generator(generator);
-}
-
-function run_test_5(generator)
-{
- // Load the profile and populate it.
- do_load_profile();
- let uri = NetUtil.newURI("http://bar.com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; path=/; max-age=1000",
- null);
- for (let i = 0; i < 3000; ++i) {
- let uri = NetUtil.newURI("http://" + i + ".com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
- }
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Corrupt the database file.
- let size = do_corrupt_db(do_get_cookie_file(profile));
-
- // Load the profile.
- do_load_profile();
-
- // At this point, the database connection should be open. Ensure that it
- // succeeded.
- do_check_false(do_get_backup_file(profile).exists());
-
- // Synchronously read in the first two cookies. This will cause them to go
- // into the cookie table, whereupon it will be written out during database
- // rebuild.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
-
- // Wait for the asynchronous read to choke, at which point the backup file
- // will be created and a new connection opened.
- new _observer(sub_generator, "cookie-db-rebuilding");
- yield;
-
- // At this point, the cookies should still be in memory. (Note that these
- // calls are re-entrant into the cookie service, but it's OK!)
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
- do_check_eq(do_count_cookies(), 2);
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
- do_check_false(do_get_rebuild_backup_file(profile).exists());
-
- // Open a database connection, and write a row that will trigger a constraint
- // violation.
- let db = new CookieDatabaseConnection(do_get_cookie_file(profile), 4);
- db.insertCookie(cookie);
- do_check_eq(do_count_cookies_in_db(db.db, "bar.com"), 1);
- do_check_eq(do_count_cookies_in_db(db.db), 1);
- db.close();
-
- // Wait for the rebuild to bail and the database to be closed.
- new _observer(sub_generator, "cookie-db-closed");
- yield;
-
- // Check that the original backup and the database itself are gone.
- do_check_true(do_get_rebuild_backup_file(profile).exists());
- do_check_true(do_get_backup_file(profile).exists());
- do_check_eq(do_get_backup_file(profile).fileSize, size);
- do_check_false(do_get_cookie_file(profile).exists());
-
- // Check that the rebuild backup has the original bar.com cookie, and possibly
- // a 0.com cookie depending on whether it got written out first or second.
- db = new CookieDatabaseConnection(do_get_rebuild_backup_file(profile), 4);
- do_check_eq(do_count_cookies_in_db(db.db, "bar.com"), 1);
- let count = do_count_cookies_in_db(db.db);
- do_check_true(count == 1 ||
- count == 2 && do_count_cookies_in_db(db.db, "0.com") == 1);
- db.close();
-
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("0.com"), 1);
- do_check_eq(do_count_cookies(), 2);
-
- // Close the profile. We do not need to wait for completion, because the
- // database has already been closed.
- do_close_profile();
-
- // Clean up.
- do_get_backup_file(profile).remove(false);
- do_get_rebuild_backup_file(profile).remove(false);
- do_check_false(do_get_cookie_file(profile).exists());
- do_check_false(do_get_backup_file(profile).exists());
- do_check_false(do_get_rebuild_backup_file(profile).exists());
- do_run_generator(generator);
-}
-
diff --git a/extensions/cookie/test/unit/test_cookies_persistence.js b/extensions/cookie/test/unit/test_cookies_persistence.js
deleted file mode 100644
index d6de81b72..000000000
--- a/extensions/cookie/test/unit/test_cookies_persistence.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// test for cookie persistence across sessions, for the cases:
-// 1) network.cookie.lifetimePolicy = 0 (expire naturally)
-// 2) network.cookie.lifetimePolicy = 2 (expire at end of session)
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Create URIs and channels pointing to foo.com and bar.com.
- // We will use these to put foo.com into first and third party contexts.
- var spec1 = "http://foo.com/foo.html";
- var spec2 = "http://bar.com/bar.html";
- var uri1 = NetUtil.newURI(spec1);
- var uri2 = NetUtil.newURI(spec2);
- var channel1 = NetUtil.newChannel({uri: uri1, loadUsingSystemPrincipal: true});
- var channel2 = NetUtil.newChannel({uri: uri2, loadUsingSystemPrincipal: true});
-
- // Force the channel URI to be used when determining the originating URI of
- // the channel.
- var httpchannel1 = channel1.QueryInterface(Ci.nsIHttpChannelInternal);
- var httpchannel2 = channel1.QueryInterface(Ci.nsIHttpChannelInternal);
- httpchannel1.forceAllowThirdPartyCookie = true;
- httpchannel2.forceAllowThirdPartyCookie = true;
-
- // test with cookies enabled, and third party cookies persistent.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
- Services.prefs.setBoolPref("network.cookie.thirdparty.sessionOnly", false);
- do_set_cookies(uri1, channel1, false, [1, 2, 3, 4]);
- do_set_cookies(uri2, channel2, true, [1, 2, 3, 4]);
-
- // fake a profile change
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_eq(Services.cookies.countCookiesFromHost(uri1.host), 4);
- do_check_eq(Services.cookies.countCookiesFromHost(uri2.host), 0);
-
- // Again, but don't wait for the async close to complete. This should always
- // work, since we blocked on close above and haven't kicked off any writes
- // since then.
- do_close_profile();
- do_load_profile();
- do_check_eq(Services.cookies.countCookiesFromHost(uri1.host), 4);
- do_check_eq(Services.cookies.countCookiesFromHost(uri2.host), 0);
-
- // test with cookies set to session-only
- Services.prefs.setIntPref("network.cookie.lifetimePolicy", 2);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel1, false, [1, 2, 3, 4]);
- do_set_cookies(uri2, channel2, true, [1, 2, 3, 4]);
-
- // fake a profile change
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_eq(Services.cookies.countCookiesFromHost(uri1.host), 0);
- do_check_eq(Services.cookies.countCookiesFromHost(uri2.host), 0);
-
- finish_test();
-}
-
diff --git a/extensions/cookie/test/unit/test_cookies_privatebrowsing.js b/extensions/cookie/test/unit/test_cookies_privatebrowsing.js
deleted file mode 100644
index ab35f8ef7..000000000
--- a/extensions/cookie/test/unit/test_cookies_privatebrowsing.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test private browsing mode.
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- do_run_generator(test_generator);
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function make_channel(url) {
- return NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true})
- .QueryInterface(Ci.nsIHttpChannel);
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Test with cookies enabled.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- // Create URIs pointing to foo.com and bar.com.
- let uri1 = NetUtil.newURI("http://foo.com/foo.html");
- let uri2 = NetUtil.newURI("http://bar.com/bar.html");
-
- // Set a cookie for host 1.
- Services.cookies.setCookieString(uri1, null, "oh=hai; max-age=1000", null);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri1.host), 1);
-
- // Enter private browsing mode, set a cookie for host 2, and check the counts.
- var chan1 = make_channel(uri1.spec);
- chan1.QueryInterface(Ci.nsIPrivateBrowsingChannel);
- chan1.setPrivate(true);
-
- var chan2 = make_channel(uri2.spec);
- chan2.QueryInterface(Ci.nsIPrivateBrowsingChannel);
- chan2.setPrivate(true);
-
- Services.cookies.setCookieString(uri2, null, "oh=hai; max-age=1000", chan2);
- do_check_eq(Services.cookiemgr.getCookieString(uri1, chan1), null);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), "oh=hai");
-
- // Remove cookies and check counts.
- Services.obs.notifyObservers(null, "last-pb-context-exited", null);
- do_check_eq(Services.cookiemgr.getCookieString(uri1, chan1), null);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), null);
-
- Services.cookies.setCookieString(uri2, null, "oh=hai; max-age=1000", chan2);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), "oh=hai");
-
- // Leave private browsing mode and check counts.
- Services.obs.notifyObservers(null, "last-pb-context-exited", null);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri1.host), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri2.host), 0);
-
- // Fake a profile change.
- do_close_profile(test_generator);
- yield;
- do_load_profile();
-
- // Check that the right cookie persisted.
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri1.host), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri2.host), 0);
-
- // Enter private browsing mode, set a cookie for host 2, and check the counts.
- do_check_eq(Services.cookiemgr.getCookieString(uri1, chan1), null);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), null);
- Services.cookies.setCookieString(uri2, null, "oh=hai; max-age=1000", chan2);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), "oh=hai");
-
- // Fake a profile change.
- do_close_profile(test_generator);
- yield;
- do_load_profile();
-
- // We're still in private browsing mode, but should have a new session.
- // Check counts.
- do_check_eq(Services.cookiemgr.getCookieString(uri1, chan1), null);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), null);
-
- // Leave private browsing mode and check counts.
- Services.obs.notifyObservers(null, "last-pb-context-exited", null);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri1.host), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri2.host), 0);
-
- // Enter private browsing mode.
-
- // Fake a profile change, but wait for async read completion.
- do_close_profile(test_generator);
- yield;
- do_load_profile(test_generator);
- yield;
-
- // We're still in private browsing mode, but should have a new session.
- // Check counts.
- do_check_eq(Services.cookiemgr.getCookieString(uri1, chan1), null);
- do_check_eq(Services.cookiemgr.getCookieString(uri2, chan2), null);
-
- // Leave private browsing mode and check counts.
- Services.obs.notifyObservers(null, "last-pb-context-exited", null);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri1.host), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(uri2.host), 0);
-
- finish_test();
-}
diff --git a/extensions/cookie/test/unit/test_cookies_profile_close.js b/extensions/cookie/test/unit/test_cookies_profile_close.js
deleted file mode 100644
index bae6e3a59..000000000
--- a/extensions/cookie/test/unit/test_cookies_profile_close.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test that the cookie APIs behave sanely after 'profile-before-change'.
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Allow all cookies.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- // Start the cookieservice.
- Services.cookies;
-
- // Set a cookie.
- let uri = NetUtil.newURI("http://foo.com");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
- let enumerator = Services.cookiemgr.enumerator;
- do_check_true(enumerator.hasMoreElements());
- let cookie = enumerator.getNext();
- do_check_false(enumerator.hasMoreElements());
-
- // Fire 'profile-before-change'.
- do_close_profile();
-
- // Check that the APIs behave appropriately.
- do_check_eq(Services.cookies.getCookieString(uri, null), null);
- do_check_eq(Services.cookies.getCookieStringFromHttp(uri, null, null), null);
- Services.cookies.setCookieString(uri, null, "oh2=hai", null);
- Services.cookies.setCookieStringFromHttp(uri, null, null, "oh3=hai", null, null);
- do_check_eq(Services.cookies.getCookieString(uri, null), null);
-
- do_check_throws(function() {
- Services.cookiemgr.removeAll();
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- Services.cookiemgr.enumerator;
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- Services.cookiemgr.add("foo.com", "", "oh4", "hai", false, false, false, 0, {});
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- Services.cookiemgr.remove("foo.com", "", "oh4", false, {});
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- let file = profile.clone();
- file.append("cookies.txt");
- Services.cookiemgr.importCookies(file);
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- Services.cookiemgr.cookieExists(cookie);
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- Services.cookies.countCookiesFromHost("foo.com");
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- do_check_throws(function() {
- Services.cookies.getCookiesFromHost("foo.com", {});
- }, Cr.NS_ERROR_NOT_AVAILABLE);
-
- // Wait for the database to finish closing.
- new _observer(test_generator, "cookie-db-closed");
- yield;
-
- // Load the profile and check that the API is available.
- do_load_profile();
- do_check_true(Services.cookiemgr.cookieExists(cookie));
-
- finish_test();
-}
-
diff --git a/extensions/cookie/test/unit/test_cookies_read.js b/extensions/cookie/test/unit/test_cookies_read.js
deleted file mode 100644
index b389ad8cc..000000000
--- a/extensions/cookie/test/unit/test_cookies_read.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// test cookie database asynchronous read operation.
-
-var test_generator = do_run_test();
-
-var CMAX = 1000; // # of cookies to create
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Allow all cookies.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- // Start the cookieservice, to force creation of a database.
- Services.cookies;
-
- // Open a database connection now, after synchronous initialization has
- // completed. We may not be able to open one later once asynchronous writing
- // begins.
- do_check_true(do_get_cookie_file(profile).exists());
- let db = new CookieDatabaseConnection(do_get_cookie_file(profile), 4);
-
- for (let i = 0; i < CMAX; ++i) {
- let uri = NetUtil.newURI("http://" + i + ".com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
- }
-
- do_check_eq(do_count_cookies(), CMAX);
-
- // Wait until all CMAX cookies have been written out to the database.
- while (do_count_cookies_in_db(db.db) < CMAX) {
- do_execute_soon(function() {
- do_run_generator(test_generator);
- });
- yield;
- }
-
- // Check the WAL file size. We set it to 16 pages of 32k, which means it
- // should be around 500k.
- let file = db.db.databaseFile;
- do_check_true(file.exists());
- do_check_true(file.fileSize < 1e6);
- db.close();
-
- // fake a profile change
- do_close_profile(test_generator);
- yield;
- do_load_profile();
-
- // test a few random cookies
- do_check_eq(Services.cookiemgr.countCookiesFromHost("999.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("abc.com"), 0);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("100.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("400.com"), 1);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("xyz.com"), 0);
-
- // force synchronous load of everything
- do_check_eq(do_count_cookies(), CMAX);
-
- // check that everything's precisely correct
- for (let i = 0; i < CMAX; ++i) {
- let host = i.toString() + ".com";
- do_check_eq(Services.cookiemgr.countCookiesFromHost(host), 1);
- }
-
- // reload again, to make sure the additions were written correctly
- do_close_profile(test_generator);
- yield;
- do_load_profile();
-
- // remove some of the cookies, in both reverse and forward order
- for (let i = 100; i-- > 0; ) {
- let host = i.toString() + ".com";
- Services.cookiemgr.remove(host, "oh", "/", false, {});
- }
- for (let i = CMAX - 100; i < CMAX; ++i) {
- let host = i.toString() + ".com";
- Services.cookiemgr.remove(host, "oh", "/", false, {});
- }
-
- // check the count
- do_check_eq(do_count_cookies(), CMAX - 200);
-
- // reload again, to make sure the removals were written correctly
- do_close_profile(test_generator);
- yield;
- do_load_profile();
-
- // check the count
- do_check_eq(do_count_cookies(), CMAX - 200);
-
- // reload again, but wait for async read completion
- do_close_profile(test_generator);
- yield;
- do_load_profile(test_generator);
- yield;
-
- // check that everything's precisely correct
- do_check_eq(do_count_cookies(), CMAX - 200);
- for (let i = 100; i < CMAX - 100; ++i) {
- let host = i.toString() + ".com";
- do_check_eq(Services.cookiemgr.countCookiesFromHost(host), 1);
- }
-
- finish_test();
-}
-
diff --git a/extensions/cookie/test/unit/test_cookies_sync_failure.js b/extensions/cookie/test/unit/test_cookies_sync_failure.js
deleted file mode 100644
index 2de1de628..000000000
--- a/extensions/cookie/test/unit/test_cookies_sync_failure.js
+++ /dev/null
@@ -1,286 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test the various ways opening a cookie database can fail in a synchronous
-// (i.e. immediate) manner, and that the database is renamed and recreated
-// under each circumstance. These circumstances are, in no particular order:
-//
-// 1) A corrupt database, such that opening the connection fails.
-// 2) The 'moz_cookies' table doesn't exist.
-// 3) Not all of the expected columns exist, and statement creation fails when:
-// a) The schema version is larger than the current version.
-// b) The schema version is less than or equal to the current version.
-// 4) Migration fails. This will have different modes depending on the initial
-// version:
-// a) Schema 1: the 'lastAccessed' column already exists.
-// b) Schema 2: the 'baseDomain' column already exists; or 'baseDomain'
-// cannot be computed for a particular host.
-// c) Schema 3: the 'creationTime' column already exists; or the
-// 'moz_uniqueid' index already exists.
-
-var COOKIE_DATABASE_SCHEMA_CURRENT = 7;
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- do_run_generator(test_generator);
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- this.profile = do_get_profile();
-
- // Allow all cookies.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- // Get the cookie file and the backup file.
- this.cookieFile = profile.clone();
- cookieFile.append("cookies.sqlite");
- this.backupFile = profile.clone();
- backupFile.append("cookies.sqlite.bak");
- do_check_false(cookieFile.exists());
- do_check_false(backupFile.exists());
-
- // Create a cookie object for testing.
- this.now = Date.now() * 1000;
- this.futureExpiry = Math.round(this.now / 1e6 + 1000);
- this.cookie = new Cookie("oh", "hai", "bar.com", "/", this.futureExpiry,
- this.now, this.now, false, false, false);
-
- this.sub_generator = run_test_1(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_2(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_3(test_generator, 99);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_3(test_generator, COOKIE_DATABASE_SCHEMA_CURRENT);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_3(test_generator, 4);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_3(test_generator, 3);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_4_exists(test_generator, 1,
- "ALTER TABLE moz_cookies ADD lastAccessed INTEGER");
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_4_exists(test_generator, 2,
- "ALTER TABLE moz_cookies ADD baseDomain TEXT");
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_4_baseDomain(test_generator);
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_4_exists(test_generator, 3,
- "ALTER TABLE moz_cookies ADD creationTime INTEGER");
- sub_generator.next();
- yield;
-
- this.sub_generator = run_test_4_exists(test_generator, 3,
- "CREATE UNIQUE INDEX moz_uniqueid ON moz_cookies (name, host, path)");
- sub_generator.next();
- yield;
-
- finish_test();
- return;
-}
-
-const garbage = "hello thar!";
-
-function create_garbage_file(file)
-{
- // Create an empty database file.
- file.create(Ci.nsIFile.NORMAL_FILE_TYPE, -1);
- do_check_true(file.exists());
- do_check_eq(file.fileSize, 0);
-
- // Write some garbage to it.
- let ostream = Cc["@mozilla.org/network/file-output-stream;1"].
- createInstance(Ci.nsIFileOutputStream);
- ostream.init(file, -1, -1, 0);
- ostream.write(garbage, garbage.length);
- ostream.flush();
- ostream.close();
-
- file = file.clone(); // Windows maintains a stat cache. It's lame.
- do_check_eq(file.fileSize, garbage.length);
-}
-
-function check_garbage_file(file)
-{
- do_check_true(file.exists());
- do_check_eq(file.fileSize, garbage.length);
- file.remove(false);
- do_check_false(file.exists());
-}
-
-function run_test_1(generator)
-{
- // Create a garbage database file.
- create_garbage_file(cookieFile);
-
- // Load the profile and populate it.
- let uri = NetUtil.newURI("http://foo.com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
-
- // Fake a profile change.
- do_close_profile(sub_generator);
- yield;
- do_load_profile();
-
- // Check that the new database contains the cookie, and the old file was
- // renamed.
- do_check_eq(do_count_cookies(), 1);
- check_garbage_file(backupFile);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Clean up.
- cookieFile.remove(false);
- do_check_false(cookieFile.exists());
- do_run_generator(generator);
-}
-
-function run_test_2(generator)
-{
- // Load the profile and populate it.
- do_load_profile();
- let uri = NetUtil.newURI("http://foo.com/");
- Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
-
- // Fake a profile change.
- do_close_profile(sub_generator);
- yield;
-
- // Drop the table.
- let db = Services.storage.openDatabase(cookieFile);
- db.executeSimpleSQL("DROP TABLE moz_cookies");
- db.close();
-
- // Load the profile and check that the table is recreated in-place.
- do_load_profile();
- do_check_eq(do_count_cookies(), 0);
- do_check_false(backupFile.exists());
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Clean up.
- cookieFile.remove(false);
- do_check_false(cookieFile.exists());
- do_run_generator(generator);
-}
-
-function run_test_3(generator, schema)
-{
- // Manually create a schema 2 database, populate it, and set the schema
- // version to the desired number.
- let schema2db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
- schema2db.insertCookie(cookie);
- schema2db.db.schemaVersion = schema;
- schema2db.close();
-
- // Load the profile and check that the column existence test fails.
- do_load_profile();
- do_check_eq(do_count_cookies(), 0);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the schema version has been reset.
- let db = Services.storage.openDatabase(cookieFile);
- do_check_eq(db.schemaVersion, COOKIE_DATABASE_SCHEMA_CURRENT);
- db.close();
-
- // Clean up.
- cookieFile.remove(false);
- do_check_false(cookieFile.exists());
- do_run_generator(generator);
-}
-
-function run_test_4_exists(generator, schema, stmt)
-{
- // Manually create a database, populate it, and add the desired column.
- let db = new CookieDatabaseConnection(do_get_cookie_file(profile), schema);
- db.insertCookie(cookie);
- db.db.executeSimpleSQL(stmt);
- db.close();
-
- // Load the profile and check that migration fails.
- do_load_profile();
- do_check_eq(do_count_cookies(), 0);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the schema version has been reset and the backup file exists.
- db = Services.storage.openDatabase(cookieFile);
- do_check_eq(db.schemaVersion, COOKIE_DATABASE_SCHEMA_CURRENT);
- db.close();
- do_check_true(backupFile.exists());
-
- // Clean up.
- cookieFile.remove(false);
- backupFile.remove(false);
- do_check_false(cookieFile.exists());
- do_check_false(backupFile.exists());
- do_run_generator(generator);
-}
-
-function run_test_4_baseDomain(generator)
-{
- // Manually create a database and populate it with a bad host.
- let db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
- let badCookie = new Cookie("oh", "hai", ".", "/", this.futureExpiry, this.now,
- this.now, false, false, false);
- db.insertCookie(badCookie);
- db.close();
-
- // Load the profile and check that migration fails.
- do_load_profile();
- do_check_eq(do_count_cookies(), 0);
-
- // Close the profile.
- do_close_profile(sub_generator);
- yield;
-
- // Check that the schema version has been reset and the backup file exists.
- db = Services.storage.openDatabase(cookieFile);
- do_check_eq(db.schemaVersion, COOKIE_DATABASE_SCHEMA_CURRENT);
- db.close();
- do_check_true(backupFile.exists());
-
- // Clean up.
- cookieFile.remove(false);
- backupFile.remove(false);
- do_check_false(cookieFile.exists());
- do_check_false(backupFile.exists());
- do_run_generator(generator);
-}
diff --git a/extensions/cookie/test/unit/test_cookies_thirdparty.js b/extensions/cookie/test/unit/test_cookies_thirdparty.js
deleted file mode 100644
index a39f807f2..000000000
--- a/extensions/cookie/test/unit/test_cookies_thirdparty.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// test third party cookie blocking, for the cases:
-// 1) with null channel
-// 2) with channel, but with no docshell parent
-
-function run_test() {
- // Create URIs and channels pointing to foo.com and bar.com.
- // We will use these to put foo.com into first and third party contexts.
- var spec1 = "http://foo.com/foo.html";
- var spec2 = "http://bar.com/bar.html";
- var uri1 = NetUtil.newURI(spec1);
- var uri2 = NetUtil.newURI(spec2);
- var channel1 = NetUtil.newChannel({uri: uri1, loadUsingSystemPrincipal: true});
- var channel2 = NetUtil.newChannel({uri: uri2, loadUsingSystemPrincipal: true});
-
- // test with cookies enabled
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
- do_set_cookies(uri1, channel1, true, [1, 2, 3, 4]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [1, 2, 3, 4]);
- Services.cookies.removeAll();
-
- // test with third party cookies blocked
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 1);
- do_set_cookies(uri1, channel1, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
-
- // Force the channel URI to be used when determining the originating URI of
- // the channel.
- var httpchannel1 = channel1.QueryInterface(Ci.nsIHttpChannelInternal);
- var httpchannel2 = channel2.QueryInterface(Ci.nsIHttpChannelInternal);
- httpchannel1.forceAllowThirdPartyCookie = true;
- httpchannel2.forceAllowThirdPartyCookie = true;
-
- // test with cookies enabled
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
- do_set_cookies(uri1, channel1, true, [1, 2, 3, 4]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [1, 2, 3, 4]);
- Services.cookies.removeAll();
-
- // test with third party cookies blocked
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 1);
- do_set_cookies(uri1, channel1, true, [0, 1, 1, 2]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
-
- // test with third party cookies limited
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 3);
- do_set_cookies(uri1, channel1, true, [0, 1, 2, 3]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri1, channel1, 1);
- do_set_cookies(uri1, channel2, true, [2, 3, 4, 5]);
- Services.cookies.removeAll();
-
- // Test per-site 3rd party cookie blocking with cookies enabled
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
- var kPermissionType = "cookie";
- var ALLOW_FIRST_PARTY_ONLY = 9;
- // ALLOW_FIRST_PARTY_ONLY overrides
- Services.perms.add(uri1, kPermissionType, ALLOW_FIRST_PARTY_ONLY);
- do_set_cookies(uri1, channel1, true, [0, 1, 1, 2]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
-
- // Test per-site 3rd party cookie blocking with 3rd party cookies disabled
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 1);
- do_set_cookies(uri1, channel1, true, [0, 1, 1, 2]);
- Services.cookies.removeAll();
- // No preference has been set for uri2, but it should act as if
- // ALLOW_FIRST_PARTY_ONLY has been set
- do_set_cookies(uri2, channel2, true, [0, 1, 1, 2]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
-
- // Test per-site 3rd party cookie blocking with 3rd party cookies limited
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 3);
- do_set_cookies(uri1, channel1, true, [0, 1, 1, 2]);
- Services.cookies.removeAll();
- // No preference has been set for uri2, but it should act as if
- // LIMIT_THIRD_PARTY has been set
- do_set_cookies(uri2, channel2, true, [0, 1, 2, 3]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri2, channel2, 1);
- do_set_cookies(uri2, channel2, true, [2, 3, 4, 5]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri1, channel1, 1);
- do_set_cookies(uri1, channel2, true, [1, 1, 1, 1]);
- Services.cookies.removeAll();
-
- // Test per-site 3rd party cookie limiting with cookies enabled
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
- var kPermissionType = "cookie";
- var LIMIT_THIRD_PARTY = 10;
- // LIMIT_THIRD_PARTY overrides
- Services.perms.add(uri1, kPermissionType, LIMIT_THIRD_PARTY);
- do_set_cookies(uri1, channel1, true, [0, 1, 2, 3]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri1, channel1, 1);
- do_set_cookies(uri1, channel2, true, [2, 3, 4, 5]);
- Services.cookies.removeAll();
-
- // Test per-site 3rd party cookie limiting with 3rd party cookies disabled
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 1);
- do_set_cookies(uri1, channel1, true, [0, 1, 2, 3]);
- Services.cookies.removeAll();
- // No preference has been set for uri2, but it should act as if
- // ALLOW_FIRST_PARTY_ONLY has been set
- do_set_cookies(uri2, channel2, true, [0, 1, 1, 2]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri1, channel1, 1);
- do_set_cookies(uri1, channel2, true, [2, 3, 4, 5]);
- Services.cookies.removeAll();
-
- // Test per-site 3rd party cookie limiting with 3rd party cookies limited
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 3);
- do_set_cookies(uri1, channel1, true, [0, 1, 2, 3]);
- Services.cookies.removeAll();
- // No preference has been set for uri2, but it should act as if
- // LIMIT_THIRD_PARTY has been set
- do_set_cookies(uri2, channel2, true, [0, 1, 2, 3]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri2, channel2, 1);
- do_set_cookies(uri2, channel2, true, [2, 3, 4, 5]);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, true, [0, 0, 0, 0]);
- Services.cookies.removeAll();
- do_set_single_http_cookie(uri1, channel1, 1);
- do_set_cookies(uri1, channel2, true, [2, 3, 4, 5]);
- Services.cookies.removeAll();
-}
-
diff --git a/extensions/cookie/test/unit/test_cookies_thirdparty_session.js b/extensions/cookie/test/unit/test_cookies_thirdparty_session.js
deleted file mode 100644
index 36e5fb11a..000000000
--- a/extensions/cookie/test/unit/test_cookies_thirdparty_session.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// test third party persistence across sessions, for the cases:
-// 1) network.cookie.thirdparty.sessionOnly = false
-// 2) network.cookie.thirdparty.sessionOnly = true
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Create URIs and channels pointing to foo.com and bar.com.
- // We will use these to put foo.com into first and third party contexts.
- var spec1 = "http://foo.com/foo.html";
- var spec2 = "http://bar.com/bar.html";
- var uri1 = NetUtil.newURI(spec1);
- var uri2 = NetUtil.newURI(spec2);
- var channel1 = NetUtil.newChannel({uri: uri1, loadUsingSystemPrincipal: true});
- var channel2 = NetUtil.newChannel({uri: uri2, loadUsingSystemPrincipal: true});
-
- // Force the channel URI to be used when determining the originating URI of
- // the channel.
- var httpchannel1 = channel1.QueryInterface(Ci.nsIHttpChannelInternal);
- var httpchannel2 = channel2.QueryInterface(Ci.nsIHttpChannelInternal);
- httpchannel1.forceAllowThirdPartyCookie = true;
- httpchannel2.forceAllowThirdPartyCookie = true;
-
- // test with cookies enabled, and third party cookies persistent.
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
- Services.prefs.setBoolPref("network.cookie.thirdparty.sessionOnly", false);
- do_set_cookies(uri1, channel2, false, [1, 2, 3, 4]);
- do_set_cookies(uri2, channel1, true, [1, 2, 3, 4]);
-
- // fake a profile change
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_eq(Services.cookies.countCookiesFromHost(uri1.host), 4);
- do_check_eq(Services.cookies.countCookiesFromHost(uri2.host), 0);
-
- // test with third party cookies for session only.
- Services.prefs.setBoolPref("network.cookie.thirdparty.sessionOnly", true);
- Services.cookies.removeAll();
- do_set_cookies(uri1, channel2, false, [1, 2, 3, 4]);
- do_set_cookies(uri2, channel1, true, [1, 2, 3, 4]);
-
- // fake a profile change
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_eq(Services.cookies.countCookiesFromHost(uri1.host), 0);
- do_check_eq(Services.cookies.countCookiesFromHost(uri2.host), 0);
-
- finish_test();
-}
diff --git a/extensions/cookie/test/unit/test_domain_eviction.js b/extensions/cookie/test/unit/test_domain_eviction.js
deleted file mode 100644
index 349f6d77e..000000000
--- a/extensions/cookie/test/unit/test_domain_eviction.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test that domain eviction occurs when the cookies per base domain limit is
-// reached, and that expired cookies are evicted before live cookies.
-
-var test_generator = do_run_test();
-
-function run_test()
-{
- do_test_pending();
- do_run_generator(test_generator);
-}
-
-function continue_test()
-{
- do_run_generator(test_generator);
-}
-
-function do_run_test()
-{
- // Set the base domain limit to 50 so we have a known value.
- Services.prefs.setIntPref("network.cookie.maxPerHost", 50);
-
- let futureExpiry = Math.floor(Date.now() / 1000 + 1000);
-
- // test eviction under the 50 cookies per base domain limit. this means
- // that cookies for foo.com and bar.foo.com should count toward this limit,
- // while cookies for baz.com should not. there are several tests we perform
- // to make sure the base domain logic is working correctly.
-
- // 1) simplest case: set 100 cookies for "foo.bar" and make sure 50 survive.
- setCookies("foo.bar", 100, futureExpiry);
- do_check_eq(countCookies("foo.bar", "foo.bar"), 50);
-
- // 2) set cookies for different subdomains of "foo.baz", and an unrelated
- // domain, and make sure all 50 within the "foo.baz" base domain are counted.
- setCookies("foo.baz", 10, futureExpiry);
- setCookies(".foo.baz", 10, futureExpiry);
- setCookies("bar.foo.baz", 10, futureExpiry);
- setCookies("baz.bar.foo.baz", 10, futureExpiry);
- setCookies("unrelated.domain", 50, futureExpiry);
- do_check_eq(countCookies("foo.baz", "baz.bar.foo.baz"), 40);
- setCookies("foo.baz", 20, futureExpiry);
- do_check_eq(countCookies("foo.baz", "baz.bar.foo.baz"), 50);
-
- // 3) ensure cookies are evicted by order of lastAccessed time, if the
- // limit on cookies per base domain is reached.
- setCookies("horse.radish", 10, futureExpiry);
-
- // Wait a while, to make sure the first batch of cookies is older than
- // the second (timer resolution varies on different platforms).
- do_timeout(100, continue_test);
- yield;
-
- setCookies("tasty.horse.radish", 50, futureExpiry);
- do_check_eq(countCookies("horse.radish", "horse.radish"), 50);
-
- let enumerator = Services.cookiemgr.enumerator;
- while (enumerator.hasMoreElements()) {
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
-
- if (cookie.host == "horse.radish")
- do_throw("cookies not evicted by lastAccessed order");
- }
-
- // Test that expired cookies for a domain are evicted before live ones.
- let shortExpiry = Math.floor(Date.now() / 1000 + 2);
- setCookies("captchart.com", 49, futureExpiry);
- Services.cookiemgr.add("captchart.com", "", "test100", "eviction",
- false, false, false, shortExpiry, {});
- do_timeout(2100, continue_test);
- yield;
-
- do_check_eq(countCookies("captchart.com", "captchart.com"), 50);
- Services.cookiemgr.add("captchart.com", "", "test200", "eviction",
- false, false, false, futureExpiry, {});
- do_check_eq(countCookies("captchart.com", "captchart.com"), 50);
-
- enumerator = Services.cookiemgr.getCookiesFromHost("captchart.com", {});
- while (enumerator.hasMoreElements()) {
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- do_check_true(cookie.expiry == futureExpiry);
- }
-
- do_finish_generator_test(test_generator);
-}
-
-// set 'aNumber' cookies with host 'aHost', with distinct names.
-function
-setCookies(aHost, aNumber, aExpiry)
-{
- for (let i = 0; i < aNumber; ++i)
- Services.cookiemgr.add(aHost, "", "test" + i, "eviction",
- false, false, false, aExpiry, {});
-}
-
-// count how many cookies are within domain 'aBaseDomain', using three
-// independent interface methods on nsICookieManager2:
-// 1) 'enumerator', an enumerator of all cookies;
-// 2) 'countCookiesFromHost', which returns the number of cookies within the
-// base domain of 'aHost',
-// 3) 'getCookiesFromHost', which returns an enumerator of 2).
-function
-countCookies(aBaseDomain, aHost)
-{
- let enumerator = Services.cookiemgr.enumerator;
-
- // count how many cookies are within domain 'aBaseDomain' using the cookie
- // enumerator.
- let cookies = [];
- while (enumerator.hasMoreElements()) {
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
-
- if (cookie.host.length >= aBaseDomain.length &&
- cookie.host.slice(cookie.host.length - aBaseDomain.length) == aBaseDomain)
- cookies.push(cookie);
- }
-
- // confirm the count using countCookiesFromHost and getCookiesFromHost.
- let result = cookies.length;
- do_check_eq(Services.cookiemgr.countCookiesFromHost(aBaseDomain),
- cookies.length);
- do_check_eq(Services.cookiemgr.countCookiesFromHost(aHost), cookies.length);
-
- enumerator = Services.cookiemgr.getCookiesFromHost(aHost, {});
- while (enumerator.hasMoreElements()) {
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
-
- if (cookie.host.length >= aBaseDomain.length &&
- cookie.host.slice(cookie.host.length - aBaseDomain.length) == aBaseDomain) {
- let found = false;
- for (let i = 0; i < cookies.length; ++i) {
- if (cookies[i].host == cookie.host && cookies[i].name == cookie.name) {
- found = true;
- cookies.splice(i, 1);
- break;
- }
- }
-
- if (!found)
- do_throw("cookie " + cookie.name + " not found in master enumerator");
-
- } else {
- do_throw("cookie host " + cookie.host + " not within domain " + aBaseDomain);
- }
- }
-
- do_check_eq(cookies.length, 0);
-
- return result;
-}
-
diff --git a/extensions/cookie/test/unit/test_eviction.js b/extensions/cookie/test/unit/test_eviction.js
deleted file mode 100644
index 7b1550208..000000000
--- a/extensions/cookie/test/unit/test_eviction.js
+++ /dev/null
@@ -1,249 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-var test_generator = do_run_test();
-
-function run_test()
-{
- do_test_pending();
- do_run_generator(test_generator);
-}
-
-function continue_test()
-{
- do_run_generator(test_generator);
-}
-
-function repeat_test()
-{
- // The test is probably going to fail because setting a batch of cookies took
- // a significant fraction of 'gPurgeAge'. Compensate by rerunning the
- // test with a larger purge age.
- do_check_true(gPurgeAge < 64);
- gPurgeAge *= 2;
- gShortExpiry *= 2;
-
- do_execute_soon(function() {
- test_generator.close();
- test_generator = do_run_test();
- do_run_generator(test_generator);
- });
-}
-
-// Purge threshold, in seconds.
-var gPurgeAge = 1;
-
-// Short expiry age, in seconds.
-var gShortExpiry = 2;
-
-// Required delay to ensure a purge occurs, in milliseconds. This must be at
-// least gPurgeAge + 10%, and includes a little fuzz to account for timer
-// resolution and possible differences between PR_Now() and Date.now().
-function get_purge_delay()
-{
- return gPurgeAge * 1100 + 100;
-}
-
-// Required delay to ensure a cookie set with an expiry time 'gShortExpiry' into
-// the future will have expired.
-function get_expiry_delay()
-{
- return gShortExpiry * 1000 + 100;
-}
-
-function do_run_test()
-{
- // Set up a profile.
- let profile = do_get_profile();
-
- // twiddle prefs to convenient values for this test
- Services.prefs.setIntPref("network.cookie.purgeAge", gPurgeAge);
- Services.prefs.setIntPref("network.cookie.maxNumber", 100);
-
- let expiry = Date.now() / 1000 + 1000;
-
- // eviction is performed based on two limits: when the total number of cookies
- // exceeds maxNumber + 10% (110), and when cookies are older than purgeAge
- // (1 second). purging is done when both conditions are satisfied, and only
- // those cookies are purged.
-
- // we test the following cases of eviction:
- // 1) excess and age are satisfied, but only some of the excess are old enough
- // to be purged.
- Services.cookiemgr.removeAll();
- if (!set_cookies(0, 5, expiry)) {
- repeat_test();
- return;
- }
- // Sleep a while, to make sure the first batch of cookies is older than
- // the second (timer resolution varies on different platforms).
- do_timeout(get_purge_delay(), continue_test);
- yield;
- if (!set_cookies(5, 111, expiry)) {
- repeat_test();
- return;
- }
-
- // Fake a profile change, to ensure eviction affects the database correctly.
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_true(check_remaining_cookies(111, 5, 106));
-
- // 2) excess and age are satisfied, and all of the excess are old enough
- // to be purged.
- Services.cookiemgr.removeAll();
- if (!set_cookies(0, 10, expiry)) {
- repeat_test();
- return;
- }
- do_timeout(get_purge_delay(), continue_test);
- yield;
- if (!set_cookies(10, 111, expiry)) {
- repeat_test();
- return;
- }
-
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_true(check_remaining_cookies(111, 10, 101));
-
- // 3) excess and age are satisfied, and more than the excess are old enough
- // to be purged.
- Services.cookiemgr.removeAll();
- if (!set_cookies(0, 50, expiry)) {
- repeat_test();
- return;
- }
- do_timeout(get_purge_delay(), continue_test);
- yield;
- if (!set_cookies(50, 111, expiry)) {
- repeat_test();
- return;
- }
-
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_true(check_remaining_cookies(111, 50, 101));
-
- // 4) excess but not age are satisfied.
- Services.cookiemgr.removeAll();
- if (!set_cookies(0, 120, expiry)) {
- repeat_test();
- return;
- }
-
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_true(check_remaining_cookies(120, 0, 120));
-
- // 5) age but not excess are satisfied.
- Services.cookiemgr.removeAll();
- if (!set_cookies(0, 20, expiry)) {
- repeat_test();
- return;
- }
- do_timeout(get_purge_delay(), continue_test);
- yield;
- if (!set_cookies(20, 110, expiry)) {
- repeat_test();
- return;
- }
-
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_true(check_remaining_cookies(110, 20, 110));
-
- // 6) Excess and age are satisfied, but the cookie limit can be satisfied by
- // purging expired cookies.
- Services.cookiemgr.removeAll();
- let shortExpiry = Math.floor(Date.now() / 1000) + gShortExpiry;
- if (!set_cookies(0, 20, shortExpiry)) {
- repeat_test();
- return;
- }
- do_timeout(get_expiry_delay(), continue_test);
- yield;
- if (!set_cookies(20, 110, expiry)) {
- repeat_test();
- return;
- }
- do_timeout(get_purge_delay(), continue_test);
- yield;
- if (!set_cookies(110, 111, expiry)) {
- repeat_test();
- return;
- }
-
- do_close_profile(test_generator);
- yield;
- do_load_profile();
- do_check_true(check_remaining_cookies(111, 20, 91));
-
- do_finish_generator_test(test_generator);
-}
-
-// Set 'end - begin' total cookies, with consecutively increasing hosts numbered
-// 'begin' to 'end'.
-function set_cookies(begin, end, expiry)
-{
- do_check_true(begin != end);
-
- let beginTime;
- for (let i = begin; i < end; ++i) {
- let host = "eviction." + i + ".tests";
- Services.cookiemgr.add(host, "", "test", "eviction", false, false, false,
- expiry, {});
-
- if (i == begin)
- beginTime = get_creationTime(i);
- }
-
- let endTime = get_creationTime(end - 1);
- do_check_true(begin == end - 1 || endTime > beginTime);
- if (endTime - beginTime > gPurgeAge * 1000000) {
- // Setting cookies took an amount of time very close to the purge threshold.
- // Retry the test with a larger threshold.
- return false;
- }
-
- return true;
-}
-
-function get_creationTime(i)
-{
- let host = "eviction." + i + ".tests";
- let enumerator = Services.cookiemgr.getCookiesFromHost(host, {});
- do_check_true(enumerator.hasMoreElements());
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- return cookie.creationTime;
-}
-
-// Test that 'aNumberToExpect' cookies remain after purging is complete, and
-// that the cookies that remain consist of the set expected given the number of
-// of older and newer cookies -- eviction should occur by order of lastAccessed
-// time, if both the limit on total cookies (maxNumber + 10%) and the purge age
-// + 10% are exceeded.
-function check_remaining_cookies(aNumberTotal, aNumberOld, aNumberToExpect) {
- var enumerator = Services.cookiemgr.enumerator;
-
- let i = 0;
- while (enumerator.hasMoreElements()) {
- var cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- ++i;
-
- if (aNumberTotal != aNumberToExpect) {
- // make sure the cookie is one of the batch we expect was purged.
- var hostNumber = new Number(cookie.rawHost.split(".")[1]);
- if (hostNumber < (aNumberOld - aNumberToExpect)) break;
- }
- }
-
- return i == aNumberToExpect;
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_cleardata.js b/extensions/cookie/test/unit/test_permmanager_cleardata.js
deleted file mode 100644
index faa2579f5..000000000
--- a/extensions/cookie/test/unit/test_permmanager_cleardata.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-var pm;
-
-// Create a principal based on the { origin, originAttributes }.
-function createPrincipal(aOrigin, aOriginAttributes)
-{
- return Services.scriptSecurityManager.createCodebasePrincipal(NetUtil.newURI(aOrigin), aOriginAttributes);
-}
-
-// Return the data required by 'clear-origin-attributes-data' notification.
-function getData(aPattern)
-{
- return JSON.stringify(aPattern);
-}
-
-// Use aEntries to create principals, add permissions to them and check that they have them.
-// Then, it is notifying 'clear-origin-attributes-data' with the given aData and check if the permissions
-// of principals[i] matches the permission in aResults[i].
-function test(aEntries, aData, aResults)
-{
- let principals = [];
-
- for (entry of aEntries) {
- principals.push(createPrincipal(entry.origin, entry.originAttributes));
- }
-
- for (principal of principals) {
- do_check_eq(pm.testPermissionFromPrincipal(principal, "test/clear-origin"), pm.UNKNOWN_ACTION);
- pm.addFromPrincipal(principal, "test/clear-origin", pm.ALLOW_ACTION, pm.EXPIRE_NEVER, 0);
- do_check_eq(pm.testPermissionFromPrincipal(principal, "test/clear-origin"), pm.ALLOW_ACTION);
- }
-
- Services.obs.notifyObservers(null, 'clear-origin-attributes-data', aData);
-
- var length = aEntries.length;
- for (let i=0; i<length; ++i) {
- do_check_eq(pm.testPermissionFromPrincipal(principals[i], 'test/clear-origin'), aResults[i]);
-
- // Remove allowed actions.
- if (aResults[i] == pm.ALLOW_ACTION) {
- pm.removeFromPrincipal(principals[i], 'test/clear-origin');
- }
- }
-}
-
-function run_test()
-{
- do_get_profile();
-
- pm = Cc["@mozilla.org/permissionmanager;1"]
- .getService(Ci.nsIPermissionManager);
-
- let entries = [
- { origin: 'http://example.com', originAttributes: { appId: 1 } },
- { origin: 'http://example.com', originAttributes: { appId: 1, inIsolatedMozBrowser: true } },
- { origin: 'http://example.com', originAttributes: {} },
- { origin: 'http://example.com', originAttributes: { appId: 2 } },
- ];
-
- // In that case, all permissions from app 1 should be removed but not the other ones.
- test(entries, getData({appId: 1}), [ pm.UNKNOWN_ACTION, pm.UNKNOWN_ACTION, pm.ALLOW_ACTION, pm.ALLOW_ACTION ]);
-
- // In that case, only the permissions of app 1 related to a browserElement should be removed.
- // All the other permissions should stay.
- test(entries, getData({appId: 1, inIsolatedMozBrowser: true}), [ pm.ALLOW_ACTION, pm.UNKNOWN_ACTION, pm.ALLOW_ACTION, pm.ALLOW_ACTION ]);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_defaults.js b/extensions/cookie/test/unit/test_permmanager_defaults.js
deleted file mode 100644
index 604f2b4d9..000000000
--- a/extensions/cookie/test/unit/test_permmanager_defaults.js
+++ /dev/null
@@ -1,295 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// The origin we use in most of the tests.
-const TEST_ORIGIN = NetUtil.newURI("http://example.org");
-const TEST_ORIGIN_HTTPS = NetUtil.newURI("https://example.org");
-const TEST_ORIGIN_2 = NetUtil.newURI("http://example.com");
-const TEST_ORIGIN_3 = NetUtil.newURI("https://example2.com:8080");
-const TEST_PERMISSION = "test-permission";
-Components.utils.import("resource://gre/modules/Promise.jsm");
-
-function promiseTimeout(delay) {
- let deferred = Promise.defer();
- do_timeout(delay, deferred.resolve);
- return deferred.promise;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function* do_test() {
- // setup a profile.
- do_get_profile();
-
- // create a file in the temp directory with the defaults.
- let file = do_get_tempdir();
- file.append("test_default_permissions");
-
- // write our test data to it.
- let ostream = Cc["@mozilla.org/network/file-output-stream;1"].
- createInstance(Ci.nsIFileOutputStream);
- ostream.init(file, -1, 0o666, 0);
- let conv = Cc["@mozilla.org/intl/converter-output-stream;1"].
- createInstance(Ci.nsIConverterOutputStream);
- conv.init(ostream, "UTF-8", 0, 0);
-
- conv.writeString("# this is a comment\n");
- conv.writeString("\n"); // a blank line!
- conv.writeString("host\t" + TEST_PERMISSION + "\t1\t" + TEST_ORIGIN.host + "\n");
- conv.writeString("host\t" + TEST_PERMISSION + "\t1\t" + TEST_ORIGIN_2.host + "\n");
- conv.writeString("origin\t" + TEST_PERMISSION + "\t1\t" + TEST_ORIGIN_3.spec + "\n");
- conv.writeString("origin\t" + TEST_PERMISSION + "\t1\t" + TEST_ORIGIN.spec + "^appId=1000&inBrowser=1\n");
- ostream.close();
-
- // Set the preference used by the permission manager so the file is read.
- Services.prefs.setCharPref("permissions.manager.defaultsUrl", "file://" + file.path);
-
- // initialize the permission manager service - it will read that default.
- let pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- // test the default permission was applied.
- let principal = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN, {});
- let principalHttps = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN_HTTPS, {});
- let principal2 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN_2, {});
- let principal3 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN_3, {});
-
- let attrs = {appId: 1000, inIsolatedMozBrowser: true};
- let principal4 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN, attrs);
- let principal5 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN_3, attrs);
-
- attrs = {userContextId: 1};
- let principal6 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN, attrs);
- attrs = {firstPartyDomain: "cnn.com"};
- let principal7 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN, attrs);
- attrs = {userContextId: 1, firstPartyDomain: "cnn.com"};
- let principal8 = Services.scriptSecurityManager.createCodebasePrincipal(TEST_ORIGIN, attrs);
-
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principalHttps, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal3, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal4, TEST_PERMISSION));
-
- // Didn't add
- do_check_eq(Ci.nsIPermissionManager.UNKNOWN_ACTION,
- pm.testPermissionFromPrincipal(principal5, TEST_PERMISSION));
-
- // the permission should exist in the enumerator.
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION, findCapabilityViaEnum(TEST_ORIGIN));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION, findCapabilityViaEnum(TEST_ORIGIN_3));
-
- // but should not have been written to the DB
- yield checkCapabilityViaDB(null);
-
- // remove all should not throw and the default should remain
- pm.removeAll();
-
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal3, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal4, TEST_PERMISSION));
- // make sure principals with userContextId or firstPartyDomain use the same permissions
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal6, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal7, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal8, TEST_PERMISSION));
-
- // Asking for this permission to be removed should result in that permission
- // having UNKNOWN_ACTION
- pm.removeFromPrincipal(principal, TEST_PERMISSION);
- do_check_eq(Ci.nsIPermissionManager.UNKNOWN_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- // make sure principals with userContextId or firstPartyDomain use the same permissions
- do_check_eq(Ci.nsIPermissionManager.UNKNOWN_ACTION,
- pm.testPermissionFromPrincipal(principal6, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.UNKNOWN_ACTION,
- pm.testPermissionFromPrincipal(principal7, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.UNKNOWN_ACTION,
- pm.testPermissionFromPrincipal(principal8, TEST_PERMISSION));
- // and we should have this UNKNOWN_ACTION reflected in the DB
- yield checkCapabilityViaDB(Ci.nsIPermissionManager.UNKNOWN_ACTION);
- // but the permission should *not* appear in the enumerator.
- do_check_eq(null, findCapabilityViaEnum());
-
- // and a subsequent RemoveAll should restore the default
- pm.removeAll();
-
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- // make sure principals with userContextId or firstPartyDomain use the same permissions
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal6, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal7, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal8, TEST_PERMISSION));
- // and allow it to again be seen in the enumerator.
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION, findCapabilityViaEnum());
-
- // now explicitly add a permission - this too should override the default.
- pm.addFromPrincipal(principal, TEST_PERMISSION, Ci.nsIPermissionManager.DENY_ACTION);
-
- // it should be reflected in a permission check, in the enumerator and the DB
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- // make sure principals with userContextId or firstPartyDomain use the same permissions
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal6, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal7, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal8, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION, findCapabilityViaEnum());
- yield checkCapabilityViaDB(Ci.nsIPermissionManager.DENY_ACTION);
-
- // explicitly add a different permission - in this case we are no longer
- // replacing the default, but instead replacing the replacement!
- pm.addFromPrincipal(principal, TEST_PERMISSION, Ci.nsIPermissionManager.PROMPT_ACTION);
-
- // it should be reflected in a permission check, in the enumerator and the DB
- do_check_eq(Ci.nsIPermissionManager.PROMPT_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- // make sure principals with userContextId or firstPartyDomain use the same permissions
- do_check_eq(Ci.nsIPermissionManager.PROMPT_ACTION,
- pm.testPermissionFromPrincipal(principal6, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.PROMPT_ACTION,
- pm.testPermissionFromPrincipal(principal7, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.PROMPT_ACTION,
- pm.testPermissionFromPrincipal(principal8, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.PROMPT_ACTION, findCapabilityViaEnum());
- yield checkCapabilityViaDB(Ci.nsIPermissionManager.PROMPT_ACTION);
-
- // --------------------------------------------------------------
- // check default permissions and removeAllSince work as expected.
- pm.removeAll(); // ensure only defaults are there.
-
- // default for both principals is allow.
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal2, TEST_PERMISSION));
-
- // Add a default override for TEST_ORIGIN_2 - this one should *not* be
- // restored in removeAllSince()
- pm.addFromPrincipal(principal2, TEST_PERMISSION, Ci.nsIPermissionManager.DENY_ACTION);
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal2, TEST_PERMISSION));
- yield promiseTimeout(20);
-
- let since = Number(Date.now());
- yield promiseTimeout(20);
-
- // explicitly add a permission which overrides the default for the first
- // principal - this one *should* be removed by removeAllSince.
- pm.addFromPrincipal(principal, TEST_PERMISSION, Ci.nsIPermissionManager.DENY_ACTION);
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
-
- // do a removeAllSince.
- pm.removeAllSince(since);
-
- // the default for the first principal should re-appear as we modified it
- // later then |since|
- do_check_eq(Ci.nsIPermissionManager.ALLOW_ACTION,
- pm.testPermissionFromPrincipal(principal, TEST_PERMISSION));
-
- // but the permission for principal2 should remain as we added that before |since|.
- do_check_eq(Ci.nsIPermissionManager.DENY_ACTION,
- pm.testPermissionFromPrincipal(principal2, TEST_PERMISSION));
-
- // remove the temp file we created.
- file.remove(false);
-});
-
-// use an enumerator to find the requested permission. Returns the permission
-// value (ie, the "capability" in nsIPermission parlance) or null if it can't
-// be found.
-function findCapabilityViaEnum(origin = TEST_ORIGIN, type = TEST_PERMISSION) {
- let result = undefined;
- let e = Services.perms.enumerator;
- while (e.hasMoreElements()) {
- let perm = e.getNext().QueryInterface(Ci.nsIPermission);
- if (perm.matchesURI(origin, true) &&
- perm.type == type) {
- if (result !== undefined) {
- // we've already found one previously - that's bad!
- do_throw("enumerator found multiple entries");
- }
- result = perm.capability;
- }
- }
- return result || null;
-}
-
-// A function to check the DB has the specified capability. As the permission
-// manager uses async DB operations without a completion callback, the
-// distinct possibility exists that our checking of the DB will happen before
-// the permission manager update has completed - so we just retry a few times.
-// Returns a promise.
-function checkCapabilityViaDB(expected, origin = TEST_ORIGIN, type = TEST_PERMISSION) {
- let deferred = Promise.defer();
- let count = 0;
- let max = 20;
- let do_check = () => {
- let got = findCapabilityViaDB(origin, type);
- if (got == expected) {
- // the do_check_eq() below will succeed - which is what we want.
- do_check_eq(got, expected, "The database has the expected value");
- deferred.resolve();
- return;
- }
- // value isn't correct - see if we've retried enough
- if (count++ == max) {
- // the do_check_eq() below will fail - which is what we want.
- do_check_eq(got, expected, "The database wasn't updated with the expected value");
- deferred.resolve();
- return;
- }
- // we can retry...
- do_timeout(100, do_check);
- }
- do_check();
- return deferred.promise;
-}
-
-// use the DB to find the requested permission. Returns the permission
-// value (ie, the "capability" in nsIPermission parlance) or null if it can't
-// be found.
-function findCapabilityViaDB(origin = TEST_ORIGIN, type = TEST_PERMISSION) {
- let principal = Services.scriptSecurityManager.createCodebasePrincipal(origin, {});
- let originStr = principal.origin;
-
- let file = Services.dirsvc.get("ProfD", Ci.nsIFile);
- file.append("permissions.sqlite");
-
- let storage = Cc["@mozilla.org/storage/service;1"]
- .getService(Ci.mozIStorageService);
-
- let connection = storage.openDatabase(file);
-
- let query = connection.createStatement(
- "SELECT permission FROM moz_perms WHERE origin = :origin AND type = :type");
- query.bindByName("origin", originStr);
- query.bindByName("type", type);
-
- if (!query.executeStep()) {
- // no row
- return null;
- }
- let result = query.getInt32(0);
- if (query.executeStep()) {
- // this is bad - we never expect more than 1 row here.
- do_throw("More than 1 row found!")
- }
- return result;
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_expiration.js b/extensions/cookie/test/unit/test_permmanager_expiration.js
deleted file mode 100644
index 7ab8e88ae..000000000
--- a/extensions/cookie/test/unit/test_permmanager_expiration.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test that permissions with specific expiry times behave as expected.
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function continue_test()
-{
- do_run_generator(test_generator);
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- let pm = Services.perms;
- let permURI = NetUtil.newURI("http://example.com");
- let principal = Services.scriptSecurityManager.createCodebasePrincipal(permURI, {});
-
- let now = Number(Date.now());
-
- // add a permission with *now* expiration
- pm.addFromPrincipal(principal, "test/expiration-perm-exp", 1, pm.EXPIRE_TIME, now);
- pm.addFromPrincipal(principal, "test/expiration-session-exp", 1, pm.EXPIRE_SESSION, now);
-
- // add a permission with future expiration (100 milliseconds)
- pm.addFromPrincipal(principal, "test/expiration-perm-exp2", 1, pm.EXPIRE_TIME, now + 100);
- pm.addFromPrincipal(principal, "test/expiration-session-exp2", 1, pm.EXPIRE_SESSION, now + 100);
-
- // add a permission with future expiration (1000 seconds)
- pm.addFromPrincipal(principal, "test/expiration-perm-exp3", 1, pm.EXPIRE_TIME, now + 1e6);
- pm.addFromPrincipal(principal, "test/expiration-session-exp3", 1, pm.EXPIRE_SESSION, now + 1e6);
-
- // add a permission without expiration
- pm.addFromPrincipal(principal, "test/expiration-perm-nexp", 1, pm.EXPIRE_NEVER, 0);
-
- // add a permission for renewal
- pm.addFromPrincipal(principal, "test/expiration-perm-renewable", 1, pm.EXPIRE_TIME, now + 100);
- pm.addFromPrincipal(principal, "test/expiration-session-renewable", 1, pm.EXPIRE_SESSION, now + 100);
-
- // And immediately renew them with longer timeouts
- pm.updateExpireTime(principal, "test/expiration-perm-renewable", true, now + 100, now + 1e6);
- pm.updateExpireTime(principal, "test/expiration-session-renewable", true, now + 1e6, now + 100);
-
- // check that the second two haven't expired yet
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-exp3"));
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-session-exp3"));
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-nexp"));
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-renewable"));
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-session-renewable"));
-
- // ... and the first one has
- do_timeout(10, continue_test);
- yield;
- do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-exp"));
- do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-session-exp"));
-
- // ... and that the short-term one will
- do_timeout(200, continue_test);
- yield;
- do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-exp2"));
- do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-session-exp2"));
-
- // Check that .getPermission returns a matching result
- do_check_null(pm.getPermissionObject(principal, "test/expiration-perm-exp", false));
- do_check_null(pm.getPermissionObject(principal, "test/expiration-session-exp", false));
- do_check_null(pm.getPermissionObject(principal, "test/expiration-perm-exp2", false));
- do_check_null(pm.getPermissionObject(principal, "test/expiration-session-exp2", false));
-
- // Check that the renewable permissions actually got renewed
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-renewable"));
- do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-session-renewable"));
-
- do_finish_generator_test(test_generator);
-}
-
diff --git a/extensions/cookie/test/unit/test_permmanager_getAllForURI.js b/extensions/cookie/test/unit/test_permmanager_getAllForURI.js
deleted file mode 100644
index 7fec41826..000000000
--- a/extensions/cookie/test/unit/test_permmanager_getAllForURI.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function check_enumerator(uri, permissions) {
- let pm = Cc["@mozilla.org/permissionmanager;1"]
- .getService(Ci.nsIPermissionManager);
-
- let enumerator = pm.getAllForURI(uri);
- for ([type, capability] of permissions) {
- let perm = enumerator.getNext();
- do_check_true(perm != null);
- do_check_true(perm.principal.URI.equals(uri));
- do_check_eq(perm.type, type);
- do_check_eq(perm.capability, capability);
- do_check_eq(perm.expireType, pm.EXPIRE_NEVER);
- }
- do_check_false(enumerator.hasMoreElements());
-}
-
-function run_test() {
- let pm = Cc["@mozilla.org/permissionmanager;1"]
- .getService(Ci.nsIPermissionManager);
-
- let uri = NetUtil.newURI("http://example.com");
- let sub = NetUtil.newURI("http://sub.example.com");
-
- check_enumerator(uri, [ ]);
-
- pm.add(uri, "test/getallforuri", pm.ALLOW_ACTION);
- check_enumerator(uri, [
- [ "test/getallforuri", pm.ALLOW_ACTION ]
- ]);
-
- // check that uris are matched exactly
- check_enumerator(sub, [ ]);
-
- pm.add(sub, "test/getallforuri", pm.PROMPT_ACTION);
- pm.add(sub, "test/getallforuri2", pm.DENY_ACTION);
-
- check_enumerator(sub, [
- [ "test/getallforuri", pm.PROMPT_ACTION ],
- [ "test/getallforuri2", pm.DENY_ACTION ]
- ]);
-
- // check that the original uri list has not changed
- check_enumerator(uri, [
- [ "test/getallforuri", pm.ALLOW_ACTION ]
- ]);
-
- // check that UNKNOWN_ACTION permissions are ignored
- pm.add(uri, "test/getallforuri2", pm.UNKNOWN_ACTION);
- pm.add(uri, "test/getallforuri3", pm.DENY_ACTION);
-
- check_enumerator(uri, [
- [ "test/getallforuri", pm.ALLOW_ACTION ],
- [ "test/getallforuri3", pm.DENY_ACTION ]
- ]);
-
- // check that permission updates are reflected
- pm.add(uri, "test/getallforuri", pm.PROMPT_ACTION);
-
- check_enumerator(uri, [
- [ "test/getallforuri", pm.PROMPT_ACTION ],
- [ "test/getallforuri3", pm.DENY_ACTION ]
- ]);
-
- // check that permission removals are reflected
- pm.remove(uri, "test/getallforuri");
-
- check_enumerator(uri, [
- [ "test/getallforuri3", pm.DENY_ACTION ]
- ]);
-
- pm.removeAll();
- check_enumerator(uri, [ ]);
- check_enumerator(sub, [ ]);
-}
-
diff --git a/extensions/cookie/test/unit/test_permmanager_getPermissionObject.js b/extensions/cookie/test/unit/test_permmanager_getPermissionObject.js
deleted file mode 100644
index d01b51923..000000000
--- a/extensions/cookie/test/unit/test_permmanager_getPermissionObject.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function getPrincipalFromURI(aURI) {
- let ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- let uri = NetUtil.newURI(aURI);
- return ssm.createCodebasePrincipal(uri, {});
-}
-
-function getSystemPrincipal() {
- return Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager)
- .getSystemPrincipal();
-}
-
-function run_test() {
- var pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- do_check_null(pm.getPermissionObject(getSystemPrincipal(), "test/pobject", false));
-
- let principal = getPrincipalFromURI("http://example.com");
- let subPrincipal = getPrincipalFromURI("http://sub.example.com");
- let subSubPrincipal = getPrincipalFromURI("http://sub.sub.example.com");
-
- do_check_null(pm.getPermissionObject(principal, "test/pobject", false));
- do_check_null(pm.getPermissionObject(principal, "test/pobject", true));
-
- pm.addFromPrincipal(principal, "test/pobject", pm.ALLOW_ACTION);
- var rootPerm = pm.getPermissionObject(principal, "test/pobject", false);
- do_check_true(rootPerm != null);
- do_check_eq(rootPerm.principal.origin, "http://example.com");
- do_check_eq(rootPerm.type, "test/pobject");
- do_check_eq(rootPerm.capability, pm.ALLOW_ACTION);
- do_check_eq(rootPerm.expireType, pm.EXPIRE_NEVER);
-
- var rootPerm2 = pm.getPermissionObject(principal, "test/pobject", true);
- do_check_true(rootPerm != null);
- do_check_eq(rootPerm.principal.origin, "http://example.com");
-
- var subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", true);
- do_check_null(subPerm);
- subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
- do_check_true(subPerm != null);
- do_check_eq(subPerm.principal.origin, "http://example.com");
- do_check_eq(subPerm.type, "test/pobject");
- do_check_eq(subPerm.capability, pm.ALLOW_ACTION);
-
- subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
- do_check_null(subPerm);
- subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", false);
- do_check_true(subPerm != null);
- do_check_eq(subPerm.principal.origin, "http://example.com");
-
- pm.addFromPrincipal(principal, "test/pobject", pm.DENY_ACTION, pm.EXPIRE_SESSION);
-
- // make sure permission objects are not dynamic
- do_check_eq(rootPerm.capability, pm.ALLOW_ACTION);
-
- // but do update on change
- rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
- do_check_eq(rootPerm.capability, pm.DENY_ACTION);
- do_check_eq(rootPerm.expireType, pm.EXPIRE_SESSION);
-
- subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
- do_check_eq(subPerm.principal.origin, "http://example.com");
- do_check_eq(subPerm.capability, pm.DENY_ACTION);
- do_check_eq(subPerm.expireType, pm.EXPIRE_SESSION);
-
- pm.addFromPrincipal(subPrincipal, "test/pobject", pm.PROMPT_ACTION);
- rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
- do_check_eq(rootPerm.principal.origin, "http://example.com");
- do_check_eq(rootPerm.capability, pm.DENY_ACTION);
-
- subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", true);
- do_check_eq(subPerm.principal.origin, "http://sub.example.com");
- do_check_eq(subPerm.capability, pm.PROMPT_ACTION);
-
- subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
- do_check_eq(subPerm.principal.origin, "http://sub.example.com");
- do_check_eq(subPerm.capability, pm.PROMPT_ACTION);
-
- subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
- do_check_null(subPerm);
-
- subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", false);
- do_check_eq(subPerm.principal.origin, "http://sub.example.com");
- do_check_eq(subPerm.capability, pm.PROMPT_ACTION);
-
- pm.removeFromPrincipal(principal, "test/pobject");
-
- rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
- do_check_null(rootPerm);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_idn.js b/extensions/cookie/test/unit/test_permmanager_idn.js
deleted file mode 100644
index 72fc06bba..000000000
--- a/extensions/cookie/test/unit/test_permmanager_idn.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function getPrincipalFromDomain(aDomain) {
- let ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- let uri = NetUtil.newURI("http://" + aDomain);
- return ssm.createCodebasePrincipal(uri, {});
-}
-
-function run_test() {
- let profile = do_get_profile();
- let pm = Services.perms;
- let perm = 'test-idn';
-
- // We create three principal linked to IDN.
- // One with just a domain, one with a subdomain and one with the TLD
- // containing a UTF-8 character.
- let mainDomainPrincipal = getPrincipalFromDomain("fôû.com");
- let subDomainPrincipal = getPrincipalFromDomain("fôô.bàr.com");
- let tldPrincipal = getPrincipalFromDomain("fôû.bàr.côm");
-
- // We add those to the permission manager.
- pm.addFromPrincipal(mainDomainPrincipal, perm, pm.ALLOW_ACTION, 0, 0);
- pm.addFromPrincipal(subDomainPrincipal, perm, pm.ALLOW_ACTION, 0, 0);
- pm.addFromPrincipal(tldPrincipal, perm, pm.ALLOW_ACTION, 0, 0);
-
- // They should obviously be there now..
- do_check_eq(pm.testPermissionFromPrincipal(mainDomainPrincipal, perm), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(subDomainPrincipal, perm), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(tldPrincipal, perm), pm.ALLOW_ACTION);
-
- // We do the same thing with the puny-encoded versions of the IDN.
- let punyMainDomainPrincipal = getPrincipalFromDomain('xn--f-xgav.com');
- let punySubDomainPrincipal = getPrincipalFromDomain('xn--f-xgaa.xn--br-jia.com');
- let punyTldPrincipal = getPrincipalFromDomain('xn--f-xgav.xn--br-jia.xn--cm-8ja');
-
- // Those principals should have the permission granted too.
- do_check_eq(pm.testPermissionFromPrincipal(punyMainDomainPrincipal, perm), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(punySubDomainPrincipal, perm), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(punyTldPrincipal, perm), pm.ALLOW_ACTION);
-
- // However, those two principals shouldn't be allowed because they are like
- // the IDN but without the UT8-8 characters.
- let witnessPrincipal = getPrincipalFromDomain("foo.com");
- do_check_eq(pm.testPermissionFromPrincipal(witnessPrincipal, perm), pm.UNKNOWN_ACTION);
- witnessPrincipal = getPrincipalFromDomain("foo.bar.com");
- do_check_eq(pm.testPermissionFromPrincipal(witnessPrincipal, perm), pm.UNKNOWN_ACTION);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_load_invalid_entries.js b/extensions/cookie/test/unit/test_permmanager_load_invalid_entries.js
deleted file mode 100644
index 8d36a9667..000000000
--- a/extensions/cookie/test/unit/test_permmanager_load_invalid_entries.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-var DEBUG_TEST = false;
-
-function run_test() {
- // Setup a profile directory.
- var dir = do_get_profile();
- // Get the db file.
- var file = dir.clone();
- file.append("permissions.sqlite");
-
- var storage = Cc["@mozilla.org/storage/service;1"]
- .getService(Ci.mozIStorageService);
-
- // Create database.
- var connection = storage.openDatabase(file);
- // The file should now exist.
- do_check_true(file.exists());
-
- connection.schemaVersion = 3;
- connection.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",host TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",appId INTEGER" +
- ",isInBrowserElement INTEGER" +
- ")");
-
- // Now we can inject garbadge in the database.
- var garbadge = [
- // Regular entry.
- { host: '42', type: '0', permission: 1, expireType: 0, expireTime: 0,
- appId: 0, isInBrowserElement: 0 },
-
- // Special values in host (some being invalid).
- { host: 'scheme:file', type: '1', permission: 0, expireType: 0,
- expireTime: 0, appId: 0, isInBrowserElement: 0 },
- { host: '192.168.0.1', type: '2', permission: 0, expireType: 0,
- expireTime: 0, appId: 0, isInBrowserElement: 0 },
- { host: '2001:0db8:0000:0000:0000:ff00:0042:8329', type: '3', permission: 0,
- expireType: 0, expireTime: 0, appId: 0, isInBrowserElement: 0 },
- { host: '::1', type: '4', permission: 0, expireType: 0, expireTime: 0,
- appId: 0, isInBrowserElement: 0 },
-
- // Permission is UNKNOWN_ACTION.
- { host: '42', type: '5', permission: Ci.nsIPermissionManager.UNKNOWN_ACTION,
- expireType: 0, expireTime: 0, appId: 0, isInBrowserElement: 0 },
-
- // Permission is out of range.
- { host: '42', type: '6', permission: 100, expireType: 0, expireTime: 0,
- appId: 0, isInBrowserElement: 0 },
- { host: '42', type: '7', permission: -100, expireType: 0, expireTime: 0,
- appId: 0, isInBrowserElement: 0 },
-
- // ExpireType is out of range.
- { host: '42', type: '8', permission: 1, expireType: -100, expireTime: 0,
- appId: 0, isInBrowserElement: 0 },
- { host: '42', type: '9', permission: 1, expireType: 100, expireTime: 0,
- appId: 0, isInBrowserElement: 0 },
-
- // ExpireTime is at 0 with ExpireType = Time.
- { host: '42', type: '10', permission: 1,
- expireType: Ci.nsIPermissionManager.EXPIRE_TIME, expireTime: 0, appId: 0,
- isInBrowserElement: 0 },
-
- // ExpireTime has a value with ExpireType != Time
- { host: '42', type: '11', permission: 1,
- expireType: Ci.nsIPermissionManager.EXPIRE_SESSION, expireTime: 1000,
- appId: 0, isInBrowserElement: 0 },
- { host: '42', type: '12', permission: 1,
- expireType: Ci.nsIPermissionManager.EXPIRE_NEVER, expireTime: 1000,
- appId: 0, isInBrowserElement: 0 },
-
- // ExpireTime is negative.
- { host: '42', type: '13', permission: 1,
- expireType: Ci.nsIPermissionManager.EXPIRE_TIME, expireTime: -1,
- appId: 0, isInBrowserElement: 0 },
-
- // AppId is negative.
- { host: '42', type: '14', permission: 1, expireType: 0, expireTime: 0,
- appId: -1, isInBrowserElement: 0 },
-
- // IsInBrowserElement is negative or higher than 1.
- { host: '42', type: '15', permission: 1, expireType: 0, expireTime: 0,
- appId: 0, isInBrowserElement: -1 },
- { host: '42', type: '16', permission: 1, expireType: 0, expireTime: 0,
- appId: 0, isInBrowserElement: 10 },
-
- // This insertion should be the last one. It is used to make sure we always
- // load it regardless of the previous entries validities.
- { host: 'example.org', type: 'test-load-invalid-entries',
- permission: Ci.nsIPermissionManager.ALLOW_ACTION, expireType: 0,
- expireTime: 0, appId: 0, isInBrowserElement: 0 },
- ];
-
- for (var i=0; i<garbadge.length; ++i) {
- if (DEBUG_TEST) {
- dump("\n value #" + i + "\n\n");
- }
- var data = garbadge[i];
- connection.executeSimpleSQL(
- "INSERT INTO moz_hosts " +
- " (id, host, type, permission, expireType, expireTime, appId, isInBrowserElement) " +
- "VALUES (" + i + ", '" + data.host + "', '" + data.type + "', "
- + data.permission + ", " + data.expireType + ", "
- + data.expireTime + ", " + data.appId + ", "
- + data.isInBrowserElement + ")"
- );
- }
-
- let earliestNow = Number(Date.now());
- // Initialize the permission manager service
- var pm = Cc["@mozilla.org/permissionmanager;1"]
- .getService(Ci.nsIPermissionManager);
- let latestNow = Number(Date.now());
-
- // The schema should be upgraded to 9, and a 'modificationTime' column should
- // exist with all records having a value of 0.
- do_check_eq(connection.schemaVersion, 9);
-
- let select = connection.createStatement("SELECT modificationTime FROM moz_perms")
- let numMigrated = 0;
- while (select.executeStep()) {
- let thisModTime = select.getInt64(0);
- do_check_true(thisModTime == 0, "new modifiedTime field is correct");
- numMigrated += 1;
- }
- // check we found at least 1 record that was migrated.
- do_check_true(numMigrated > 0, "we found at least 1 record that was migrated");
-
- // This permission should always be there.
- let ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- let uri = NetUtil.newURI("http://example.org");
- let principal = ssm.createCodebasePrincipal(uri, {});
- do_check_eq(pm.testPermissionFromPrincipal(principal, 'test-load-invalid-entries'), Ci.nsIPermissionManager.ALLOW_ACTION);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_local_files.js b/extensions/cookie/test/unit/test_permmanager_local_files.js
deleted file mode 100644
index b9c803f5c..000000000
--- a/extensions/cookie/test/unit/test_permmanager_local_files.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test that permissions work for file:// URIs (aka local files).
-
-function getPrincipalFromURIString(uriStr)
-{
- let uri = NetUtil.newURI(uriStr);
- return Services.scriptSecurityManager.createCodebasePrincipal(uri, {});
-}
-
-function run_test() {
- let pm = Services.perms;
-
- // If we add a permission to a file:// URI, the test should return true.
- let principal = getPrincipalFromURIString("file:///foo/bar");
- pm.addFromPrincipal(principal, "test/local-files", pm.ALLOW_ACTION, 0, 0);
- do_check_eq(pm.testPermissionFromPrincipal(principal, "test/local-files"), pm.ALLOW_ACTION);
-
- // Another file:// URI should have the same permission.
- let witnessPrincipal = getPrincipalFromURIString("file:///bar/foo");
- do_check_eq(pm.testPermissionFromPrincipal(witnessPrincipal, "test/local-files"), pm.UNKNOWN_ACTION);
-
- // Giving "file:///" a permission shouldn't give it to all file:// URIs.
- let rootPrincipal = getPrincipalFromURIString("file:///");
- pm.addFromPrincipal(rootPrincipal, "test/local-files", pm.ALLOW_ACTION, 0, 0);
- do_check_eq(pm.testPermissionFromPrincipal(witnessPrincipal, "test/local-files"), pm.UNKNOWN_ACTION);
-
- // Giving "file://" a permission shouldn't give it to all file:// URIs.
- let schemeRootPrincipal = getPrincipalFromURIString("file://");
- pm.addFromPrincipal(schemeRootPrincipal, "test/local-files", pm.ALLOW_ACTION, 0, 0);
- do_check_eq(pm.testPermissionFromPrincipal(witnessPrincipal, "test/local-files"), pm.UNKNOWN_ACTION);
-
- // Giving 'node' a permission shouldn't give it to its 'children'.
- let fileInDirPrincipal = getPrincipalFromURIString("file:///foo/bar/foobar.txt");
- do_check_eq(pm.testPermissionFromPrincipal(fileInDirPrincipal, "test/local-files"), pm.UNKNOWN_ACTION);
-
- // Revert "file:///foo/bar" permission and check that it has been correctly taken into account.
- pm.removeFromPrincipal(principal, "test/local-files");
- do_check_eq(pm.testPermissionFromPrincipal(principal, "test/local-files"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(witnessPrincipal, "test/local-files"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(fileInDirPrincipal, "test/local-files"), pm.UNKNOWN_ACTION);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_matches.js b/extensions/cookie/test/unit/test_permmanager_matches.js
deleted file mode 100644
index c15288890..000000000
--- a/extensions/cookie/test/unit/test_permmanager_matches.js
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function matches_always(perm, principals) {
- principals.forEach((principal) => {
- do_check_true(perm.matches(principal, true), "perm: " + perm.principal.origin + ", princ: " + principal.origin);
- do_check_true(perm.matches(principal, false), "perm: " + perm.principal.origin + ", princ: " + principal.origin);
- });
-}
-
-function matches_weak(perm, principals) {
- principals.forEach((principal) => {
- do_check_false(perm.matches(principal, true), "perm: " + perm.principal.origin + ", princ: " + principal.origin);
- do_check_true(perm.matches(principal, false), "perm: " + perm.principal.origin + ", princ: " + principal.origin);
- });
-}
-
-function matches_never(perm, principals) {
- principals.forEach((principal) => {
- do_check_false(perm.matches(principal, true), "perm: " + perm.principal.origin + ", princ: " + principal.origin);
- do_check_false(perm.matches(principal, false), "perm: " + perm.principal.origin + ", princ: " + principal.origin);
- });
-}
-
-function run_test() {
- // initialize the permission manager service
- let pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- let secMan = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
-
- // Add some permissions
- let uri0 = NetUtil.newURI("http://google.com/search?q=foo#hashtag", null, null);
- let uri1 = NetUtil.newURI("http://hangouts.google.com/subdir", null, null);
- let uri2 = NetUtil.newURI("http://google.org/", null, null);
- let uri3 = NetUtil.newURI("https://google.com/some/random/subdirectory", null, null);
- let uri4 = NetUtil.newURI("https://hangouts.google.com/#!/hangout", null, null);
- let uri5 = NetUtil.newURI("http://google.com:8096/", null, null);
-
- let uri0_n_n = secMan.createCodebasePrincipal(uri0, {});
- let uri1_n_n = secMan.createCodebasePrincipal(uri1, {});
- let uri2_n_n = secMan.createCodebasePrincipal(uri2, {});
- let uri3_n_n = secMan.createCodebasePrincipal(uri3, {});
- let uri4_n_n = secMan.createCodebasePrincipal(uri4, {});
- let uri5_n_n = secMan.createCodebasePrincipal(uri5, {});
-
- let attrs = {appId: 1000};
- let uri0_1000_n = secMan.createCodebasePrincipal(uri0, attrs);
- let uri1_1000_n = secMan.createCodebasePrincipal(uri1, attrs);
- let uri2_1000_n = secMan.createCodebasePrincipal(uri2, attrs);
- let uri3_1000_n = secMan.createCodebasePrincipal(uri3, attrs);
- let uri4_1000_n = secMan.createCodebasePrincipal(uri4, attrs);
- let uri5_1000_n = secMan.createCodebasePrincipal(uri5, attrs);
-
- attrs = {appId: 1000, inIsolatedMozBrowser: true};
- let uri0_1000_y = secMan.createCodebasePrincipal(uri0, attrs);
- let uri1_1000_y = secMan.createCodebasePrincipal(uri1, attrs);
- let uri2_1000_y = secMan.createCodebasePrincipal(uri2, attrs);
- let uri3_1000_y = secMan.createCodebasePrincipal(uri3, attrs);
- let uri4_1000_y = secMan.createCodebasePrincipal(uri4, attrs);
- let uri5_1000_y = secMan.createCodebasePrincipal(uri5, attrs);
-
- attrs = {appId: 2000};
- let uri0_2000_n = secMan.createCodebasePrincipal(uri0, attrs);
- let uri1_2000_n = secMan.createCodebasePrincipal(uri1, attrs);
- let uri2_2000_n = secMan.createCodebasePrincipal(uri2, attrs);
- let uri3_2000_n = secMan.createCodebasePrincipal(uri3, attrs);
- let uri4_2000_n = secMan.createCodebasePrincipal(uri4, attrs);
- let uri5_2000_n = secMan.createCodebasePrincipal(uri5, attrs);
-
- attrs = {appId: 2000, inIsolatedMozBrowser: true};
- let uri0_2000_y = secMan.createCodebasePrincipal(uri0, attrs);
- let uri1_2000_y = secMan.createCodebasePrincipal(uri1, attrs);
- let uri2_2000_y = secMan.createCodebasePrincipal(uri2, attrs);
- let uri3_2000_y = secMan.createCodebasePrincipal(uri3, attrs);
- let uri4_2000_y = secMan.createCodebasePrincipal(uri4, attrs);
- let uri5_2000_y = secMan.createCodebasePrincipal(uri5, attrs);
-
- attrs = {userContextId: 1};
- let uri0_1 = secMan.createCodebasePrincipal(uri0, attrs);
- let uri1_1 = secMan.createCodebasePrincipal(uri1, attrs);
- let uri2_1 = secMan.createCodebasePrincipal(uri2, attrs);
- let uri3_1 = secMan.createCodebasePrincipal(uri3, attrs);
- let uri4_1 = secMan.createCodebasePrincipal(uri4, attrs);
- let uri5_1 = secMan.createCodebasePrincipal(uri5, attrs);
-
- attrs = {firstPartyDomain: "cnn.com"};
- let uri0_cnn = secMan.createCodebasePrincipal(uri0, attrs);
- let uri1_cnn = secMan.createCodebasePrincipal(uri1, attrs);
- let uri2_cnn = secMan.createCodebasePrincipal(uri2, attrs);
- let uri3_cnn = secMan.createCodebasePrincipal(uri3, attrs);
- let uri4_cnn = secMan.createCodebasePrincipal(uri4, attrs);
- let uri5_cnn = secMan.createCodebasePrincipal(uri5, attrs);
-
- pm.addFromPrincipal(uri0_n_n, "test/matches", pm.ALLOW_ACTION);
- let perm_n_n = pm.getPermissionObject(uri0_n_n, "test/matches", true);
- pm.addFromPrincipal(uri0_1000_n, "test/matches", pm.ALLOW_ACTION);
- let perm_1000_n = pm.getPermissionObject(uri0_1000_n, "test/matches", true);
- pm.addFromPrincipal(uri0_1000_y, "test/matches", pm.ALLOW_ACTION);
- let perm_1000_y = pm.getPermissionObject(uri0_1000_y, "test/matches", true);
- pm.addFromPrincipal(uri0_2000_n, "test/matches", pm.ALLOW_ACTION);
- let perm_2000_n = pm.getPermissionObject(uri0_2000_n, "test/matches", true);
- pm.addFromPrincipal(uri0_2000_y, "test/matches", pm.ALLOW_ACTION);
- let perm_2000_y = pm.getPermissionObject(uri0_2000_y, "test/matches", true);
- pm.addFromPrincipal(uri0_1, "test/matches", pm.ALLOW_ACTION);
- let perm_1 = pm.getPermissionObject(uri0_n_n, "test/matches", true);
- pm.addFromPrincipal(uri0_cnn, "test/matches", pm.ALLOW_ACTION);
- let perm_cnn = pm.getPermissionObject(uri0_n_n, "test/matches", true);
-
- matches_always(perm_n_n, [uri0_n_n, uri0_1, uri0_cnn]);
- matches_weak(perm_n_n, [uri1_n_n, uri1_1, uri1_cnn]);
- matches_never(perm_n_n, [uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_1000_n, uri1_1000_n, uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_1000_y, uri1_1000_y, uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_2000_n, uri1_2000_n, uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_2000_y, uri1_2000_y, uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri2_1, uri3_1, uri4_1, uri5_1,
- uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- matches_always(perm_1000_n, [uri0_1000_n]);
- matches_weak(perm_1000_n, [uri1_1000_n]);
- matches_never(perm_1000_n, [uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_n_n, uri1_n_n, uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_1000_y, uri1_1000_y, uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_2000_n, uri1_2000_n, uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_2000_y, uri1_2000_y, uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri0_1, uri1_1, uri2_1, uri3_1, uri4_1, uri5_1,
- uri0_cnn, uri1_cnn, uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- matches_always(perm_1000_y, [uri0_1000_y]);
- matches_weak(perm_1000_y, [uri1_1000_y]);
- matches_never(perm_1000_y, [uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_n_n, uri1_n_n, uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_1000_n, uri1_1000_n, uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_2000_n, uri1_2000_n, uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_2000_y, uri1_2000_y, uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri0_1, uri1_1, uri2_1, uri3_1, uri4_1, uri5_1,
- uri0_cnn, uri1_cnn, uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- matches_always(perm_2000_n, [uri0_2000_n]);
- matches_weak(perm_2000_n, [uri1_2000_n]);
- matches_never(perm_2000_n, [uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_n_n, uri1_n_n, uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_2000_y, uri1_2000_y, uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri0_1000_n, uri1_1000_n, uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_1000_y, uri1_1000_y, uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_1, uri1_1, uri2_1, uri3_1, uri4_1, uri5_1,
- uri0_cnn, uri1_cnn, uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- matches_always(perm_2000_y, [uri0_2000_y]);
- matches_weak(perm_2000_y, [uri1_2000_y]);
- matches_never(perm_2000_y, [uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri0_n_n, uri1_n_n, uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_2000_n, uri1_2000_n, uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_1000_n, uri1_1000_n, uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_1000_y, uri1_1000_y, uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_1, uri1_1, uri2_1, uri3_1, uri4_1, uri5_1,
- uri0_cnn, uri1_cnn, uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- matches_always(perm_1, [uri0_n_n, uri0_1, uri0_cnn]);
- matches_weak(perm_1, [uri1_n_n, uri1_1, uri1_cnn]);
- matches_never(perm_1, [uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_1000_n, uri1_1000_n, uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_1000_y, uri1_1000_y, uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_2000_n, uri1_2000_n, uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_2000_y, uri1_2000_y, uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri2_1, uri3_1, uri4_1, uri5_1,
- uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- matches_always(perm_cnn, [uri0_n_n, uri0_1, uri0_cnn]);
- matches_weak(perm_cnn, [uri1_n_n, uri1_1, uri1_cnn]);
- matches_never(perm_cnn, [uri2_n_n, uri3_n_n, uri4_n_n, uri5_n_n,
- uri0_1000_n, uri1_1000_n, uri2_1000_n, uri3_1000_n, uri4_1000_n, uri5_1000_n,
- uri0_1000_y, uri1_1000_y, uri2_1000_y, uri3_1000_y, uri4_1000_y, uri5_1000_y,
- uri0_2000_n, uri1_2000_n, uri2_2000_n, uri3_2000_n, uri4_2000_n, uri5_2000_n,
- uri0_2000_y, uri1_2000_y, uri2_2000_y, uri3_2000_y, uri4_2000_y, uri5_2000_y,
- uri2_1, uri3_1, uri4_1, uri5_1,
- uri2_cnn, uri3_cnn, uri4_cnn, uri5_cnn]);
-
- // Clean up!
- pm.removeAll();
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_matchesuri.js b/extensions/cookie/test/unit/test_permmanager_matchesuri.js
deleted file mode 100644
index 88578166c..000000000
--- a/extensions/cookie/test/unit/test_permmanager_matchesuri.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function matches_always(perm, uris) {
- uris.forEach((uri) => {
- do_check_true(perm.matchesURI(uri, true), "perm: " + perm.principal.origin + ", URI: " + uri.spec);
- do_check_true(perm.matchesURI(uri, false), "perm: " + perm.principal.origin + ", URI: " + uri.spec);
- });
-}
-
-function matches_weak(perm, uris) {
- uris.forEach((uri) => {
- do_check_false(perm.matchesURI(uri, true), "perm: " + perm.principal.origin + ", URI: " + uri.spec);
- do_check_true(perm.matchesURI(uri, false), "perm: " + perm.principal.origin + ", URI: " + uri.spec);
- });
-}
-
-function matches_never(perm, uris) {
- uris.forEach((uri) => {
- do_check_false(perm.matchesURI(uri, true), "perm: " + perm.principal.origin + ", URI: " + uri.spec);
- do_check_false(perm.matchesURI(uri, false), "perm: " + perm.principal.origin + ", URI: " + uri.spec);
- });
-}
-
-function mk_permission(uri, isAppPermission = false) {
- let pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- let secMan = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
-
- // Get the permission from the principal!
- let attrs = {appId: 1000};
- let principal =
- secMan.createCodebasePrincipal(uri, isAppPermission ? attrs : {});
-
- pm.addFromPrincipal(principal, "test/matchesuri", pm.ALLOW_ACTION);
- let permission = pm.getPermissionObject(principal, "test/matchesuri", true);
-
- return permission;
-}
-
-function run_test() {
- // initialize the permission manager service
- let pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- let secMan = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
-
- let fileprefix = "file:///";
- if (Services.appinfo.OS == "WINNT") {
- // Windows rejects files if they don't have a drive. See Bug 1180870
- fileprefix += "c:/";
- }
-
- // Add some permissions
- let uri0 = NetUtil.newURI("http://google.com:9091/just/a/path", null, null);
- let uri1 = NetUtil.newURI("http://hangouts.google.com:9091/some/path", null, null);
- let uri2 = NetUtil.newURI("http://google.com:9091/", null, null);
- let uri3 = NetUtil.newURI("http://google.org:9091/", null, null);
- let uri4 = NetUtil.newURI("http://deeper.hangouts.google.com:9091/", null, null);
- let uri5 = NetUtil.newURI("https://google.com/just/a/path", null, null);
- let uri6 = NetUtil.newURI("https://hangouts.google.com", null, null);
- let uri7 = NetUtil.newURI("https://google.com/", null, null);
-
- let fileuri1 = NetUtil.newURI(fileprefix + "a/file/path", null, null);
- let fileuri2 = NetUtil.newURI(fileprefix + "a/file/path/deeper", null, null);
- let fileuri3 = NetUtil.newURI(fileprefix + "a/file/otherpath", null, null);
-
- {
- let perm = mk_permission(uri0);
- matches_always(perm, [uri0, uri2]);
- matches_weak(perm, [uri1, uri4]);
- matches_never(perm, [uri3, uri5, uri6, uri7, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri1);
- matches_always(perm, [uri1]);
- matches_weak(perm, [uri4]);
- matches_never(perm, [uri0, uri2, uri3, uri5, uri6, uri7, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri2);
- matches_always(perm, [uri0, uri2]);
- matches_weak(perm, [uri1, uri4]);
- matches_never(perm, [uri3, uri5, uri6, uri7, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri3);
- matches_always(perm, [uri3]);
- matches_weak(perm, []);
- matches_never(perm, [uri1, uri2, uri4, uri5, uri6, uri7, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri4);
- matches_always(perm, [uri4]);
- matches_weak(perm, []);
- matches_never(perm, [uri1, uri2, uri3, uri5, uri6, uri7, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri5);
- matches_always(perm, [uri5, uri7]);
- matches_weak(perm, [uri6]);
- matches_never(perm, [uri0, uri1, uri2, uri3, uri4, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri6);
- matches_always(perm, [uri6]);
- matches_weak(perm, []);
- matches_never(perm, [uri0, uri1, uri2, uri3, uri4, uri5, uri7, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(uri7);
- matches_always(perm, [uri5, uri7]);
- matches_weak(perm, [uri6]);
- matches_never(perm, [uri0, uri1, uri2, uri3, uri4, fileuri1, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(fileuri1);
- matches_always(perm, [fileuri1]);
- matches_weak(perm, []);
- matches_never(perm, [uri0, uri1, uri2, uri3, uri4, uri5, uri6, uri7, fileuri2, fileuri3]);
- }
-
- {
- let perm = mk_permission(fileuri2);
- matches_always(perm, [fileuri2]);
- matches_weak(perm, []);
- matches_never(perm, [uri0, uri1, uri2, uri3, uri4, uri5, uri6, uri7, fileuri1, fileuri3]);
- }
-
- {
- let perm = mk_permission(fileuri3);
- matches_always(perm, [fileuri3]);
- matches_weak(perm, []);
- matches_never(perm, [uri0, uri1, uri2, uri3, uri4, uri5, uri6, uri7, fileuri1, fileuri2]);
- }
-
- // Clean up!
- pm.removeAll();
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js b/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js
deleted file mode 100644
index 4749422da..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
- "resource://testing-common/PlacesTestUtils.jsm");
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 4;
-
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",host TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ",appId INTEGER" +
- ",isInBrowserElement INTEGER" +
- ")");
-
- let stmtInsert = db.createStatement(
- "INSERT INTO moz_hosts (" +
- "id, host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement" +
- ") VALUES (" +
- ":id, :host, :type, :permission, :expireType, :expireTime, :modificationTime, :appId, :isInBrowserElement" +
- ")");
-
- let id = 0;
-
- function insertHost(host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement) {
- let thisId = id++;
-
- stmtInsert.bindByName("id", thisId);
- stmtInsert.bindByName("host", host);
- stmtInsert.bindByName("type", type);
- stmtInsert.bindByName("permission", permission);
- stmtInsert.bindByName("expireType", expireType);
- stmtInsert.bindByName("expireTime", expireTime);
- stmtInsert.bindByName("modificationTime", modificationTime);
- stmtInsert.bindByName("appId", appId);
- stmtInsert.bindByName("isInBrowserElement", isInBrowserElement);
-
- stmtInsert.execute();
-
- return {
- id: thisId,
- host: host,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime,
- appId: appId,
- isInBrowserElement: isInBrowserElement
- };
- }
-
- // Add some rows to the database
- let created = [
- insertHost("foo.com", "A", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "C", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 1000, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 2000, true),
- insertHost("sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("subber.sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 1000, false),
- insertHost("bar.ca", "A", 1, 0, 0, 0, 1000, true),
- insertHost("localhost", "A", 1, 0, 0, 0, 0, false),
- insertHost("127.0.0.1", "A", 1, 0, 0, 0, 0, false),
- insertHost("192.0.2.235", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///some/path/to/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///another/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{8695105a-adbe-4e4e-8083-851faa5ca2d7}", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{12ahjksd-akjs-asd3-8393-asdu2189asdu}", "B", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "A", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "B", 1, 0, 0, 0, 0, false),
- ];
-
- // CLose the db connection
- stmtInsert.finalize();
- db.close();
- stmtInsert = null;
- db = null;
-
- let expected = [
- // The http:// entries under foo.com won't be inserted, as there are history entries for foo.com,
- // and http://foo.com or a subdomain are never visited.
- // ["http://foo.com", "A", 1, 0, 0],
- // ["http://foo.com^appId=1000", "A", 1, 0, 0],
- // ["http://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- //
- // Because we search for port/scheme combinations under eTLD+1, we should not have http:// entries
- // for subdomains of foo.com either
- // ["http://sub.foo.com", "B", 1, 0, 0],
- // ["http://subber.sub.foo.com", "B", 1, 0, 0],
-
- ["https://foo.com", "A", 1, 0, 0],
- ["https://foo.com", "C", 1, 0, 0],
- ["https://foo.com^appId=1000", "A", 1, 0, 0],
- ["https://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- ["https://sub.foo.com", "B", 1, 0, 0],
- ["https://subber.sub.foo.com", "B", 1, 0, 0],
-
- // bar.ca will have both http:// and https:// for all entries, because there are no associated history entries
- ["http://bar.ca", "B", 1, 0, 0],
- ["https://bar.ca", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000", "B", 1, 0, 0],
- ["https://bar.ca^appId=1000", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["https://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["file:///some/path/to/file.html", "A", 1, 0, 0],
- ["file:///another/file.html", "A", 1, 0, 0],
-
- // Because we put ftp://some.subdomain.of.foo.com:8000/some/subdirectory in the history, we should
- // also have these entries
- ["ftp://foo.com:8000", "A", 1, 0, 0],
- ["ftp://foo.com:8000", "C", 1, 0, 0],
- ["ftp://foo.com:8000^appId=1000", "A", 1, 0, 0],
- ["ftp://foo.com:8000^appId=2000&inBrowser=1", "A", 1, 0, 0],
-
- // In addition, because we search for port/scheme combinations under eTLD+1, we should have the
- // following entries
- ["ftp://sub.foo.com:8000", "B", 1, 0, 0],
- ["ftp://subber.sub.foo.com:8000", "B", 1, 0, 0],
-
- // Make sure that we also support localhost, and IP addresses
- ["http://localhost", "A", 1, 0, 0],
- ["https://localhost", "A", 1, 0, 0],
- ["http://127.0.0.1", "A", 1, 0, 0],
- ["https://127.0.0.1", "A", 1, 0, 0],
- ["http://192.0.2.235", "A", 1, 0, 0],
- ["https://192.0.2.235", "A", 1, 0, 0],
- ];
-
- let found = expected.map((it) => 0);
-
- // Add some places to the places database
- yield PlacesTestUtils.addVisits(Services.io.newURI("https://foo.com/some/other/subdirectory", null, null));
- yield PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory", null, null));
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_false(db.tableExists("moz_perms_v6"));
-
- // The moz_hosts table should still exist but be empty
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), 0);
-
- db.close();
- }
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js b/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js
deleted file mode 100644
index 38646660a..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js
+++ /dev/null
@@ -1,226 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-/*
- * Prevent the nsINavHistoryService from being avaliable for the migration
- */
-
-var CONTRACT_ID = "@mozilla.org/browser/nav-history-service;1";
-var factory = {
- createInstance: function() {
- throw new Error("There is no history service");
- },
- lockFactory: function() {
- throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
- },
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory])
-};
-
-var newClassID = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator).generateUUID();
-
-var registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
-var oldClassID = registrar.contractIDToCID(CONTRACT_ID);
-var oldFactory = Components.manager.getClassObject(Cc[CONTRACT_ID], Ci.nsIFactory);
-registrar.unregisterFactory(oldClassID, oldFactory);
-registrar.registerFactory(newClassID, "", CONTRACT_ID, factory);
-
-function cleanupFactory() {
- registrar.unregisterFactory(newClassID, factory);
- registrar.registerFactory(oldClassID, "", CONTRACT_ID, oldFactory);
-}
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-/*
- * Done nsINavHistoryService code
- */
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- // Make sure that we can't resolve the nsINavHistoryService
- try {
- Cc['@mozilla.org/browser/nav-history-service;1'].getService(Ci.nsINavHistoryService);
- do_check_true(false, "There shouldn't have been a nsINavHistoryService");
- } catch (e) {
- do_check_true(true, "There wasn't a nsINavHistoryService");
- }
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 4;
-
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",host TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ",appId INTEGER" +
- ",isInBrowserElement INTEGER" +
- ")");
-
- let stmtInsert = db.createStatement(
- "INSERT INTO moz_hosts (" +
- "id, host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement" +
- ") VALUES (" +
- ":id, :host, :type, :permission, :expireType, :expireTime, :modificationTime, :appId, :isInBrowserElement" +
- ")");
-
- let id = 0;
-
- function insertHost(host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement) {
- let thisId = id++;
-
- stmtInsert.bindByName("id", thisId);
- stmtInsert.bindByName("host", host);
- stmtInsert.bindByName("type", type);
- stmtInsert.bindByName("permission", permission);
- stmtInsert.bindByName("expireType", expireType);
- stmtInsert.bindByName("expireTime", expireTime);
- stmtInsert.bindByName("modificationTime", modificationTime);
- stmtInsert.bindByName("appId", appId);
- stmtInsert.bindByName("isInBrowserElement", isInBrowserElement);
-
- stmtInsert.execute();
-
- return {
- id: thisId,
- host: host,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime,
- appId: appId,
- isInBrowserElement: isInBrowserElement
- };
- }
-
- // Add some rows to the database
- let created = [
- insertHost("foo.com", "A", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "C", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 1000, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 2000, true),
- insertHost("sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("subber.sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 1000, false),
- insertHost("bar.ca", "A", 1, 0, 0, 0, 1000, true),
- insertHost("localhost", "A", 1, 0, 0, 0, 0, false),
- insertHost("127.0.0.1", "A", 1, 0, 0, 0, 0, false),
- insertHost("263.123.555.676", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///some/path/to/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///another/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{8695105a-adbe-4e4e-8083-851faa5ca2d7}", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{12ahjksd-akjs-asd3-8393-asdu2189asdu}", "B", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "A", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "B", 1, 0, 0, 0, 0, false),
- ];
-
- // CLose the db connection
- stmtInsert.finalize();
- db.close();
- stmtInsert = null;
- db = null;
-
- let expected = [
- ["http://foo.com", "A", 1, 0, 0],
- ["http://foo.com", "C", 1, 0, 0],
- ["http://foo.com^appId=1000", "A", 1, 0, 0],
- ["http://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- ["http://sub.foo.com", "B", 1, 0, 0],
- ["http://subber.sub.foo.com", "B", 1, 0, 0],
-
- ["https://foo.com", "A", 1, 0, 0],
- ["https://foo.com", "C", 1, 0, 0],
- ["https://foo.com^appId=1000", "A", 1, 0, 0],
- ["https://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- ["https://sub.foo.com", "B", 1, 0, 0],
- ["https://subber.sub.foo.com", "B", 1, 0, 0],
-
- // bar.ca will have both http:// and https:// for all entries, because there are no associated history entries
- ["http://bar.ca", "B", 1, 0, 0],
- ["https://bar.ca", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000", "B", 1, 0, 0],
- ["https://bar.ca^appId=1000", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["https://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["file:///some/path/to/file.html", "A", 1, 0, 0],
- ["file:///another/file.html", "A", 1, 0, 0],
-
- // Make sure that we also support localhost, and IP addresses
- ["http://localhost", "A", 1, 0, 0],
- ["https://localhost", "A", 1, 0, 0],
- ["http://127.0.0.1", "A", 1, 0, 0],
- ["https://127.0.0.1", "A", 1, 0, 0],
- ["http://263.123.555.676", "A", 1, 0, 0],
- ["https://263.123.555.676", "A", 1, 0, 0],
- ];
-
- let found = expected.map((it) => 0);
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_false(db.tableExists("moz_perms_v6"));
-
- // The moz_hosts table should still exist but be empty
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), 0);
-
- db.close();
- }
-
- cleanupFactory();
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js b/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js
deleted file mode 100644
index 4d38d72e8..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js
+++ /dev/null
@@ -1,284 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
- "resource://testing-common/PlacesTestUtils.jsm");
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 5;
-
- /*
- * V5 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",origin TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ")");
-
- let stmt5Insert = db.createStatement(
- "INSERT INTO moz_hosts (" +
- "id, origin, type, permission, expireType, expireTime, modificationTime" +
- ") VALUES (" +
- ":id, :origin, :type, :permission, :expireType, :expireTime, :modificationTime" +
- ")");
-
- /*
- * V4 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts_v4 (" +
- " id INTEGER PRIMARY KEY" +
- ",host TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ",appId INTEGER" +
- ",isInBrowserElement INTEGER" +
- ")");
-
- let stmtInsert = db.createStatement(
- "INSERT INTO moz_hosts_v4 (" +
- "id, host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement" +
- ") VALUES (" +
- ":id, :host, :type, :permission, :expireType, :expireTime, :modificationTime, :appId, :isInBrowserElement" +
- ")");
-
- let id = 0;
-
- function insertOrigin(origin, type, permission, expireType, expireTime, modificationTime) {
- let thisId = id++;
-
- stmt5Insert.bindByName("id", thisId);
- stmt5Insert.bindByName("origin", origin);
- stmt5Insert.bindByName("type", type);
- stmt5Insert.bindByName("permission", permission);
- stmt5Insert.bindByName("expireType", expireType);
- stmt5Insert.bindByName("expireTime", expireTime);
- stmt5Insert.bindByName("modificationTime", modificationTime);
-
- stmt5Insert.execute();
-
- return {
- id: thisId,
- origin: origin,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime
- };
- }
-
- function insertHost(host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement) {
- let thisId = id++;
-
- stmtInsert.bindByName("id", thisId);
- stmtInsert.bindByName("host", host);
- stmtInsert.bindByName("type", type);
- stmtInsert.bindByName("permission", permission);
- stmtInsert.bindByName("expireType", expireType);
- stmtInsert.bindByName("expireTime", expireTime);
- stmtInsert.bindByName("modificationTime", modificationTime);
- stmtInsert.bindByName("appId", appId);
- stmtInsert.bindByName("isInBrowserElement", isInBrowserElement);
-
- stmtInsert.execute();
-
- return {
- id: thisId,
- host: host,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime,
- appId: appId,
- isInBrowserElement: isInBrowserElement
- };
- }
-
- let created5 = [
- insertOrigin("https://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0),
- ];
-
- // Add some rows to the database
- let created = [
- insertHost("foo.com", "A", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "C", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 1000, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 2000, true),
- insertHost("sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("subber.sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 1000, false),
- insertHost("bar.ca", "A", 1, 0, 0, 0, 1000, true),
- insertHost("localhost", "A", 1, 0, 0, 0, 0, false),
- insertHost("127.0.0.1", "A", 1, 0, 0, 0, 0, false),
- insertHost("192.0.2.235", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///some/path/to/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///another/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{8695105a-adbe-4e4e-8083-851faa5ca2d7}", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{12ahjksd-akjs-asd3-8393-asdu2189asdu}", "B", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "A", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "B", 1, 0, 0, 0, 0, false),
- ];
-
- // CLose the db connection
- stmtInsert.finalize();
- db.close();
- stmtInsert = null;
- db = null;
-
- let expected = [
- // The http:// entries under foo.com won't be inserted, as there are history entries for foo.com,
- // and http://foo.com or a subdomain are never visited.
- // ["http://foo.com", "A", 1, 0, 0],
- // ["http://foo.com^appId=1000", "A", 1, 0, 0],
- // ["http://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- //
- // Because we search for port/scheme combinations under eTLD+1, we should not have http:// entries
- // for subdomains of foo.com either
- // ["http://sub.foo.com", "B", 1, 0, 0],
- // ["http://subber.sub.foo.com", "B", 1, 0, 0],
-
- ["https://foo.com", "A", 1, 0, 0],
- ["https://foo.com", "C", 1, 0, 0],
- ["https://foo.com^appId=1000", "A", 1, 0, 0],
- ["https://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- ["https://sub.foo.com", "B", 1, 0, 0],
- ["https://subber.sub.foo.com", "B", 1, 0, 0],
-
- // bar.ca will have both http:// and https:// for all entries, because there are no associated history entries
- ["http://bar.ca", "B", 1, 0, 0],
- ["https://bar.ca", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000", "B", 1, 0, 0],
- ["https://bar.ca^appId=1000", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["https://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["file:///some/path/to/file.html", "A", 1, 0, 0],
- ["file:///another/file.html", "A", 1, 0, 0],
-
- // Because we put ftp://some.subdomain.of.foo.com:8000/some/subdirectory in the history, we should
- // also have these entries
- ["ftp://foo.com:8000", "A", 1, 0, 0],
- ["ftp://foo.com:8000", "C", 1, 0, 0],
- ["ftp://foo.com:8000^appId=1000", "A", 1, 0, 0],
- ["ftp://foo.com:8000^appId=2000&inBrowser=1", "A", 1, 0, 0],
-
- // In addition, because we search for port/scheme combinations under eTLD+1, we should have the
- // following entries
- ["ftp://sub.foo.com:8000", "B", 1, 0, 0],
- ["ftp://subber.sub.foo.com:8000", "B", 1, 0, 0],
-
- // Make sure that we also support localhost, and IP addresses
- ["http://localhost", "A", 1, 0, 0],
- ["https://localhost", "A", 1, 0, 0],
- ["http://127.0.0.1", "A", 1, 0, 0],
- ["https://127.0.0.1", "A", 1, 0, 0],
- ["http://192.0.2.235", "A", 1, 0, 0],
- ["https://192.0.2.235", "A", 1, 0, 0],
- ];
-
- let found = expected.map((it) => 0);
-
- // Add some places to the places database
- yield PlacesTestUtils.addVisits(Services.io.newURI("https://foo.com/some/other/subdirectory", null, null));
- yield PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory", null, null));
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_true(db.tableExists("moz_perms_v6"));
-
- // The moz_hosts table should still exist but be empty
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), 0);
-
- // Check that the moz_perms_v6 table contains the backup of the entry we created
- let mozPermsV6Stmt = db.createStatement("SELECT " +
- "origin, type, permission, expireType, expireTime, modificationTime " +
- "FROM moz_perms_v6 WHERE id = :id");
-
- // Check that the moz_hosts table still contains the correct values.
- created5.forEach((it) => {
- mozPermsV6Stmt.reset();
- mozPermsV6Stmt.bindByName("id", it.id);
- mozPermsV6Stmt.executeStep();
- do_check_eq(mozPermsV6Stmt.getUTF8String(0), it.origin);
- do_check_eq(mozPermsV6Stmt.getUTF8String(1), it.type);
- do_check_eq(mozPermsV6Stmt.getInt64(2), it.permission);
- do_check_eq(mozPermsV6Stmt.getInt64(3), it.expireType);
- do_check_eq(mozPermsV6Stmt.getInt64(4), it.expireTime);
- do_check_eq(mozPermsV6Stmt.getInt64(5), it.modificationTime);
- });
-
- // Check that there are the right number of values
- let mozPermsV6Count = db.createStatement("SELECT count(*) FROM moz_perms_v6");
- mozPermsV6Count.executeStep();
- do_check_eq(mozPermsV6Count.getInt64(0), created5.length);
-
- db.close();
- }
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js b/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js
deleted file mode 100644
index 0e5820d2b..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
- "resource://testing-common/PlacesTestUtils.jsm");
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 5;
-
- /*
- * V5 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",origin TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ")");
-
- let stmt5Insert = db.createStatement(
- "INSERT INTO moz_hosts (" +
- "id, origin, type, permission, expireType, expireTime, modificationTime" +
- ") VALUES (" +
- ":id, :origin, :type, :permission, :expireType, :expireTime, :modificationTime" +
- ")");
-
- let id = 0;
-
- function insertOrigin(origin, type, permission, expireType, expireTime, modificationTime) {
- let thisId = id++;
-
- stmt5Insert.bindByName("id", thisId);
- stmt5Insert.bindByName("origin", origin);
- stmt5Insert.bindByName("type", type);
- stmt5Insert.bindByName("permission", permission);
- stmt5Insert.bindByName("expireType", expireType);
- stmt5Insert.bindByName("expireTime", expireTime);
- stmt5Insert.bindByName("modificationTime", modificationTime);
-
- stmt5Insert.execute();
-
- return {
- id: thisId,
- host: origin,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime
- };
- }
-
- let created5 = [
- insertOrigin("https://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0),
-
- insertOrigin("http://127.0.0.1", "B", 2, 0, 0, 0),
- insertOrigin("http://localhost", "B", 2, 0, 0, 0),
- ];
-
- let created4 = []; // Didn't create any v4 entries, so the DB should be empty
-
- // CLose the db connection
- stmt5Insert.finalize();
- db.close();
- stmt5Insert = null;
- db = null;
-
- let expected = [
- ["https://foo.com", "A", 2, 0, 0, 0],
- ["http://foo.com", "A", 2, 0, 0, 0],
- ["http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0],
-
- ["http://127.0.0.1", "B", 2, 0, 0, 0],
- ["http://localhost", "B", 2, 0, 0, 0],
- ];
-
- let found = expected.map((it) => 0);
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_false(db.tableExists("moz_perms_v6"));
-
- let mozHostsStmt = db.createStatement("SELECT " +
- "host, type, permission, expireType, expireTime, " +
- "modificationTime, appId, isInBrowserElement " +
- "FROM moz_hosts WHERE id = :id");
-
- // Check that the moz_hosts table still contains the correct values.
- created4.forEach((it) => {
- mozHostsStmt.reset();
- mozHostsStmt.bindByName("id", it.id);
- mozHostsStmt.executeStep();
- do_check_eq(mozHostsStmt.getUTF8String(0), it.host);
- do_check_eq(mozHostsStmt.getUTF8String(1), it.type);
- do_check_eq(mozHostsStmt.getInt64(2), it.permission);
- do_check_eq(mozHostsStmt.getInt64(3), it.expireType);
- do_check_eq(mozHostsStmt.getInt64(4), it.expireTime);
- do_check_eq(mozHostsStmt.getInt64(5), it.modificationTime);
- do_check_eq(mozHostsStmt.getInt64(6), it.appId);
- do_check_eq(mozHostsStmt.getInt64(7), it.isInBrowserElement);
- });
-
- // Check that there are the right number of values
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), created4.length);
-
- db.close();
- }
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js b/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js
deleted file mode 100644
index aa634c7eb..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js
+++ /dev/null
@@ -1,284 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
- "resource://testing-common/PlacesTestUtils.jsm");
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 6;
-
- /*
- * V5 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_perms (" +
- " id INTEGER PRIMARY KEY" +
- ",origin TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ")");
-
- let stmt6Insert = db.createStatement(
- "INSERT INTO moz_perms (" +
- "id, origin, type, permission, expireType, expireTime, modificationTime" +
- ") VALUES (" +
- ":id, :origin, :type, :permission, :expireType, :expireTime, :modificationTime" +
- ")");
-
- /*
- * V4 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",host TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ",appId INTEGER" +
- ",isInBrowserElement INTEGER" +
- ")");
-
- let stmtInsert = db.createStatement(
- "INSERT INTO moz_hosts (" +
- "id, host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement" +
- ") VALUES (" +
- ":id, :host, :type, :permission, :expireType, :expireTime, :modificationTime, :appId, :isInBrowserElement" +
- ")");
-
- let id = 0;
-
- function insertOrigin(origin, type, permission, expireType, expireTime, modificationTime) {
- let thisId = id++;
-
- stmt6Insert.bindByName("id", thisId);
- stmt6Insert.bindByName("origin", origin);
- stmt6Insert.bindByName("type", type);
- stmt6Insert.bindByName("permission", permission);
- stmt6Insert.bindByName("expireType", expireType);
- stmt6Insert.bindByName("expireTime", expireTime);
- stmt6Insert.bindByName("modificationTime", modificationTime);
-
- stmt6Insert.execute();
-
- return {
- id: thisId,
- origin: origin,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime
- };
- }
-
- function insertHost(host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement) {
- let thisId = id++;
-
- stmtInsert.bindByName("id", thisId);
- stmtInsert.bindByName("host", host);
- stmtInsert.bindByName("type", type);
- stmtInsert.bindByName("permission", permission);
- stmtInsert.bindByName("expireType", expireType);
- stmtInsert.bindByName("expireTime", expireTime);
- stmtInsert.bindByName("modificationTime", modificationTime);
- stmtInsert.bindByName("appId", appId);
- stmtInsert.bindByName("isInBrowserElement", isInBrowserElement);
-
- stmtInsert.execute();
-
- return {
- id: thisId,
- host: host,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime,
- appId: appId,
- isInBrowserElement: isInBrowserElement
- };
- }
-
- let created6 = [
- insertOrigin("https://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0),
- ];
-
- // Add some rows to the database
- let created = [
- insertHost("foo.com", "A", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "C", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 1000, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 2000, true),
- insertHost("sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("subber.sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 1000, false),
- insertHost("bar.ca", "A", 1, 0, 0, 0, 1000, true),
- insertHost("localhost", "A", 1, 0, 0, 0, 0, false),
- insertHost("127.0.0.1", "A", 1, 0, 0, 0, 0, false),
- insertHost("192.0.2.235", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///some/path/to/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///another/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{8695105a-adbe-4e4e-8083-851faa5ca2d7}", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{12ahjksd-akjs-asd3-8393-asdu2189asdu}", "B", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "A", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "B", 1, 0, 0, 0, 0, false),
- ];
-
- // CLose the db connection
- stmtInsert.finalize();
- db.close();
- stmtInsert = null;
- db = null;
-
- let expected = [
- // The http:// entries under foo.com won't be inserted, as there are history entries for foo.com,
- // and http://foo.com or a subdomain are never visited.
- // ["http://foo.com", "A", 1, 0, 0],
- // ["http://foo.com^appId=1000", "A", 1, 0, 0],
- // ["http://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- //
- // Because we search for port/scheme combinations under eTLD+1, we should not have http:// entries
- // for subdomains of foo.com either
- // ["http://sub.foo.com", "B", 1, 0, 0],
- // ["http://subber.sub.foo.com", "B", 1, 0, 0],
-
- ["https://foo.com", "A", 1, 0, 0],
- ["https://foo.com", "C", 1, 0, 0],
- ["https://foo.com^appId=1000", "A", 1, 0, 0],
- ["https://foo.com^appId=2000&inBrowser=1", "A", 1, 0, 0],
- ["https://sub.foo.com", "B", 1, 0, 0],
- ["https://subber.sub.foo.com", "B", 1, 0, 0],
-
- // bar.ca will have both http:// and https:// for all entries, because there are no associated history entries
- ["http://bar.ca", "B", 1, 0, 0],
- ["https://bar.ca", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000", "B", 1, 0, 0],
- ["https://bar.ca^appId=1000", "B", 1, 0, 0],
- ["http://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["https://bar.ca^appId=1000&inBrowser=1", "A", 1, 0, 0],
- ["file:///some/path/to/file.html", "A", 1, 0, 0],
- ["file:///another/file.html", "A", 1, 0, 0],
-
- // Because we put ftp://some.subdomain.of.foo.com:8000/some/subdirectory in the history, we should
- // also have these entries
- ["ftp://foo.com:8000", "A", 1, 0, 0],
- ["ftp://foo.com:8000", "C", 1, 0, 0],
- ["ftp://foo.com:8000^appId=1000", "A", 1, 0, 0],
- ["ftp://foo.com:8000^appId=2000&inBrowser=1", "A", 1, 0, 0],
-
- // In addition, because we search for port/scheme combinations under eTLD+1, we should have the
- // following entries
- ["ftp://sub.foo.com:8000", "B", 1, 0, 0],
- ["ftp://subber.sub.foo.com:8000", "B", 1, 0, 0],
-
- // Make sure that we also support localhost, and IP addresses
- ["http://localhost", "A", 1, 0, 0],
- ["https://localhost", "A", 1, 0, 0],
- ["http://127.0.0.1", "A", 1, 0, 0],
- ["https://127.0.0.1", "A", 1, 0, 0],
- ["http://192.0.2.235", "A", 1, 0, 0],
- ["https://192.0.2.235", "A", 1, 0, 0],
- ];
-
- let found = expected.map((it) => 0);
-
- // Add some places to the places database
- yield PlacesTestUtils.addVisits(Services.io.newURI("https://foo.com/some/other/subdirectory", null, null));
- yield PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory", null, null));
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_true(db.tableExists("moz_perms_v6"));
-
- // The moz_hosts table should still exist but be empty
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), 0);
-
- // Check that the moz_perms_v6 table contains the backup of the entry we created
- let mozPermsV6Stmt = db.createStatement("SELECT " +
- "origin, type, permission, expireType, expireTime, modificationTime " +
- "FROM moz_perms_v6 WHERE id = :id");
-
- // Check that the moz_hosts table still contains the correct values.
- created6.forEach((it) => {
- mozPermsV6Stmt.reset();
- mozPermsV6Stmt.bindByName("id", it.id);
- mozPermsV6Stmt.executeStep();
- do_check_eq(mozPermsV6Stmt.getUTF8String(0), it.origin);
- do_check_eq(mozPermsV6Stmt.getUTF8String(1), it.type);
- do_check_eq(mozPermsV6Stmt.getInt64(2), it.permission);
- do_check_eq(mozPermsV6Stmt.getInt64(3), it.expireType);
- do_check_eq(mozPermsV6Stmt.getInt64(4), it.expireTime);
- do_check_eq(mozPermsV6Stmt.getInt64(5), it.modificationTime);
- });
-
- // Check that there are the right number of values
- let mozPermsV6Count = db.createStatement("SELECT count(*) FROM moz_perms_v6");
- mozPermsV6Count.executeStep();
- do_check_eq(mozPermsV6Count.getInt64(0), created6.length);
-
- db.close();
- }
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js b/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js
deleted file mode 100644
index 7b138ff29..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
- "resource://testing-common/PlacesTestUtils.jsm");
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 6;
-
- /*
- * V5 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_perms (" +
- " id INTEGER PRIMARY KEY" +
- ",origin TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ")");
-
- let stmt6Insert = db.createStatement(
- "INSERT INTO moz_perms (" +
- "id, origin, type, permission, expireType, expireTime, modificationTime" +
- ") VALUES (" +
- ":id, :origin, :type, :permission, :expireType, :expireTime, :modificationTime" +
- ")");
-
- let id = 0;
-
- function insertOrigin(origin, type, permission, expireType, expireTime, modificationTime) {
- let thisId = id++;
-
- stmt6Insert.bindByName("id", thisId);
- stmt6Insert.bindByName("origin", origin);
- stmt6Insert.bindByName("type", type);
- stmt6Insert.bindByName("permission", permission);
- stmt6Insert.bindByName("expireType", expireType);
- stmt6Insert.bindByName("expireTime", expireTime);
- stmt6Insert.bindByName("modificationTime", modificationTime);
-
- stmt6Insert.execute();
-
- return {
- id: thisId,
- host: origin,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime
- };
- }
-
- let created6 = [
- insertOrigin("https://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0),
- ];
-
- let created4 = []; // Didn't create any v4 entries, so the DB should be empty
-
- // CLose the db connection
- stmt6Insert.finalize();
- db.close();
- stmt6Insert = null;
- db = null;
-
- let expected = [
- ["https://foo.com", "A", 2, 0, 0, 0],
- ["http://foo.com", "A", 2, 0, 0, 0],
- ["http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0]
- ];
-
- let found = expected.map((it) => 0);
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_false(db.tableExists("moz_perms_v6"));
-
- let mozHostsStmt = db.createStatement("SELECT " +
- "host, type, permission, expireType, expireTime, " +
- "modificationTime, appId, isInBrowserElement " +
- "FROM moz_hosts WHERE id = :id");
-
- // Check that the moz_hosts table still contains the correct values.
- created4.forEach((it) => {
- mozHostsStmt.reset();
- mozHostsStmt.bindByName("id", it.id);
- mozHostsStmt.executeStep();
- do_check_eq(mozHostsStmt.getUTF8String(0), it.host);
- do_check_eq(mozHostsStmt.getUTF8String(1), it.type);
- do_check_eq(mozHostsStmt.getInt64(2), it.permission);
- do_check_eq(mozHostsStmt.getInt64(3), it.expireType);
- do_check_eq(mozHostsStmt.getInt64(4), it.expireTime);
- do_check_eq(mozHostsStmt.getInt64(5), it.modificationTime);
- do_check_eq(mozHostsStmt.getInt64(6), it.appId);
- do_check_eq(mozHostsStmt.getInt64(7), it.isInBrowserElement);
- });
-
- // Check that there are the right number of values
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), created4.length);
-
- db.close();
- }
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js b/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js
deleted file mode 100644
index 56d5e2347..000000000
--- a/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js
+++ /dev/null
@@ -1,246 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
- "resource://testing-common/PlacesTestUtils.jsm");
-
-var PERMISSIONS_FILE_NAME = "permissions.sqlite";
-
-function GetPermissionsFile(profile)
-{
- let file = profile.clone();
- file.append(PERMISSIONS_FILE_NAME);
- return file;
-}
-
-function run_test() {
- run_next_test();
-}
-
-add_task(function test() {
- /* Create and set up the permissions database */
- let profile = do_get_profile();
-
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- db.schemaVersion = 7;
-
- /*
- * V5 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_perms (" +
- " id INTEGER PRIMARY KEY" +
- ",origin TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ")");
-
- let stmt6Insert = db.createStatement(
- "INSERT INTO moz_perms (" +
- "id, origin, type, permission, expireType, expireTime, modificationTime" +
- ") VALUES (" +
- ":id, :origin, :type, :permission, :expireType, :expireTime, :modificationTime" +
- ")");
-
- /*
- * V4 table
- */
- db.executeSimpleSQL(
- "CREATE TABLE moz_hosts (" +
- " id INTEGER PRIMARY KEY" +
- ",host TEXT" +
- ",type TEXT" +
- ",permission INTEGER" +
- ",expireType INTEGER" +
- ",expireTime INTEGER" +
- ",modificationTime INTEGER" +
- ",appId INTEGER" +
- ",isInBrowserElement INTEGER" +
- ")");
-
- let stmtInsert = db.createStatement(
- "INSERT INTO moz_hosts (" +
- "id, host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement" +
- ") VALUES (" +
- ":id, :host, :type, :permission, :expireType, :expireTime, :modificationTime, :appId, :isInBrowserElement" +
- ")");
-
- /*
- * The v4 table is a backup
- */
- db.executeSimpleSQL("CREATE TABLE moz_hosts_is_backup (dummy INTEGER PRIMARY KEY)");
-
- let id = 0;
-
- function insertOrigin(origin, type, permission, expireType, expireTime, modificationTime) {
- let thisId = id++;
-
- stmt6Insert.bindByName("id", thisId);
- stmt6Insert.bindByName("origin", origin);
- stmt6Insert.bindByName("type", type);
- stmt6Insert.bindByName("permission", permission);
- stmt6Insert.bindByName("expireType", expireType);
- stmt6Insert.bindByName("expireTime", expireTime);
- stmt6Insert.bindByName("modificationTime", modificationTime);
-
- stmt6Insert.execute();
-
- return {
- id: thisId,
- origin: origin,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime
- };
- }
-
- function insertHost(host, type, permission, expireType, expireTime, modificationTime, appId, isInBrowserElement) {
- let thisId = id++;
-
- stmtInsert.bindByName("id", thisId);
- stmtInsert.bindByName("host", host);
- stmtInsert.bindByName("type", type);
- stmtInsert.bindByName("permission", permission);
- stmtInsert.bindByName("expireType", expireType);
- stmtInsert.bindByName("expireTime", expireTime);
- stmtInsert.bindByName("modificationTime", modificationTime);
- stmtInsert.bindByName("appId", appId);
- stmtInsert.bindByName("isInBrowserElement", isInBrowserElement);
-
- stmtInsert.execute();
-
- return {
- id: thisId,
- host: host,
- type: type,
- permission: permission,
- expireType: expireType,
- expireTime: expireTime,
- modificationTime: modificationTime,
- appId: appId,
- isInBrowserElement: isInBrowserElement
- };
- }
-
- let created7 = [
- insertOrigin("https://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com", "A", 2, 0, 0, 0),
- insertOrigin("http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0),
- insertOrigin("https://192.0.2.235", "A", 2, 0, 0),
- ];
-
- // Add some rows to the database
- let created = [
- insertHost("foo.com", "A", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "C", 1, 0, 0, 0, 0, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 1000, false),
- insertHost("foo.com", "A", 1, 0, 0, 0, 2000, true),
- insertHost("sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("subber.sub.foo.com", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 0, false),
- insertHost("bar.ca", "B", 1, 0, 0, 0, 1000, false),
- insertHost("bar.ca", "A", 1, 0, 0, 0, 1000, true),
- insertHost("localhost", "A", 1, 0, 0, 0, 0, false),
- insertHost("127.0.0.1", "A", 1, 0, 0, 0, 0, false),
- insertHost("192.0.2.235", "A", 1, 0, 0, 0, 0, false),
- // Although ipv6 addresses are written with [] around the IP address,
- // the .host property doesn't contain these []s, which means that we
- // write it like this
- insertHost("2001:db8::ff00:42:8329", "C", 1, 0, 0, 0, 0, false),
- insertHost("file:///some/path/to/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("file:///another/file.html", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{8695105a-adbe-4e4e-8083-851faa5ca2d7}", "A", 1, 0, 0, 0, 0, false),
- insertHost("moz-nullprincipal:{12ahjksd-akjs-asd3-8393-asdu2189asdu}", "B", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "A", 1, 0, 0, 0, 0, false),
- insertHost("<file>", "B", 1, 0, 0, 0, 0, false),
- ];
-
- // CLose the db connection
- stmtInsert.finalize();
- db.close();
- stmtInsert = null;
- db = null;
-
- let expected = [
- // We should have kept the previously migrated entries
- ["https://foo.com", "A", 2, 0, 0, 0],
- ["http://foo.com", "A", 2, 0, 0, 0],
- ["http://foo.com^appId=1000&inBrowser=1", "A", 2, 0, 0, 0],
-
- // Make sure that we also support localhost, and IP addresses
- ["https://localhost:8080", "A", 1, 0, 0],
- ["ftp://127.0.0.1:8080", "A", 1, 0, 0],
-
- ["http://[2001:db8::ff00:42:8329]", "C", 1, 0, 0],
- ["https://[2001:db8::ff00:42:8329]", "C", 1, 0, 0],
- ["http://192.0.2.235", "A", 1, 0, 0],
-
- // There should only be one entry of this type in the database
- ["https://192.0.2.235", "A", 2, 0, 0],
- ];
-
- let found = expected.map((it) => 0);
-
- // Add some places to the places database
- yield PlacesTestUtils.addVisits(Services.io.newURI("https://foo.com/some/other/subdirectory", null, null));
- yield PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory", null, null));
- yield PlacesTestUtils.addVisits(Services.io.newURI("ftp://127.0.0.1:8080", null, null));
- yield PlacesTestUtils.addVisits(Services.io.newURI("https://localhost:8080", null, null));
-
- // Force initialization of the nsPermissionManager
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) {
- let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- let isExpected = false;
-
- expected.forEach((it, i) => {
- if (permission.principal.origin == it[0] &&
- permission.type == it[1] &&
- permission.capability == it[2] &&
- permission.expireType == it[3] &&
- permission.expireTime == it[4]) {
- isExpected = true;
- found[i]++;
- }
- });
-
- do_check_true(isExpected,
- "Permission " + (isExpected ? "should" : "shouldn't") +
- " be in permission database: " +
- permission.principal.origin + ", " +
- permission.type + ", " +
- permission.capability + ", " +
- permission.expireType + ", " +
- permission.expireTime);
- }
-
- found.forEach((count, i) => {
- do_check_true(count == 1, "Expected count = 1, got count = " + count + " for permission " + expected[i]);
- });
-
- // Check to make sure that all of the tables which we care about are present
- {
- let db = Services.storage.openDatabase(GetPermissionsFile(profile));
- do_check_true(db.tableExists("moz_perms"));
- do_check_true(db.tableExists("moz_hosts"));
- do_check_false(db.tableExists("moz_hosts_is_backup"));
- do_check_false(db.tableExists("moz_perms_v6"));
-
- // The moz_hosts table should still exist but be empty
- let mozHostsCount = db.createStatement("SELECT count(*) FROM moz_hosts");
- mozHostsCount.executeStep();
- do_check_eq(mozHostsCount.getInt64(0), 0);
-
- // Check that there are the right number of values in the permissions database
- let mozPermsCount = db.createStatement("SELECT count(*) FROM moz_perms");
- mozPermsCount.executeStep();
- do_check_eq(mozPermsCount.getInt64(0), expected.length);
-
- db.close();
- }
-});
diff --git a/extensions/cookie/test/unit/test_permmanager_notifications.js b/extensions/cookie/test/unit/test_permmanager_notifications.js
deleted file mode 100644
index 5708fe8ec..000000000
--- a/extensions/cookie/test/unit/test_permmanager_notifications.js
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test that the permissionmanager 'added', 'changed', 'deleted', and 'cleared'
-// notifications behave as expected.
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function continue_test()
-{
- do_run_generator(test_generator);
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- let pm = Services.perms;
- let now = Number(Date.now());
- let permType = "test/expiration-perm";
- let ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- let uri = NetUtil.newURI("http://example.com");
- let principal = ssm.createCodebasePrincipal(uri, {});
-
- let observer = new permission_observer(test_generator, now, permType);
- Services.obs.addObserver(observer, "perm-changed", false);
-
- // Add a permission, to test the 'add' notification. Note that we use
- // do_execute_soon() so that we can use our generator to continue the test
- // where we left off.
- do_execute_soon(function() {
- pm.addFromPrincipal(principal, permType, pm.ALLOW_ACTION, pm.EXPIRE_TIME, now + 100000);
- });
- yield;
-
- // Alter a permission, to test the 'changed' notification.
- do_execute_soon(function() {
- pm.addFromPrincipal(principal, permType, pm.ALLOW_ACTION, pm.EXPIRE_TIME, now + 200000);
- });
- yield;
-
- // Remove a permission, to test the 'deleted' notification.
- do_execute_soon(function() {
- pm.removeFromPrincipal(principal, permType);
- });
- yield;
-
- // Clear permissions, to test the 'cleared' notification.
- do_execute_soon(function() {
- pm.removeAll();
- });
- yield;
-
- Services.obs.removeObserver(observer, "perm-changed");
- do_check_eq(observer.adds, 1);
- do_check_eq(observer.changes, 1);
- do_check_eq(observer.deletes, 1);
- do_check_true(observer.cleared);
-
- do_finish_generator_test(test_generator);
-}
-
-function permission_observer(generator, now, type) {
- // Set up our observer object.
- this.generator = generator;
- this.pm = Services.perms;
- this.now = now;
- this.type = type;
- this.adds = 0;
- this.changes = 0;
- this.deletes = 0;
- this.cleared = false;
-}
-
-permission_observer.prototype = {
- observe: function(subject, topic, data) {
- do_check_eq(topic, "perm-changed");
-
- // "deleted" means a permission was deleted. aPermission is the deleted permission.
- // "added" means a permission was added. aPermission is the added permission.
- // "changed" means a permission was altered. aPermission is the new permission.
- // "cleared" means the entire permission list was cleared. aPermission is null.
- if (data == "added") {
- var perm = subject.QueryInterface(Ci.nsIPermission);
- this.adds++;
- switch (this.adds) {
- case 1:
- do_check_eq(this.type, perm.type);
- do_check_eq(this.pm.EXPIRE_TIME, perm.expireType);
- do_check_eq(this.now + 100000, perm.expireTime);
- break;
- default:
- do_throw("too many add notifications posted.");
- }
-
- } else if (data == "changed") {
- let perm = subject.QueryInterface(Ci.nsIPermission);
- this.changes++;
- switch (this.changes) {
- case 1:
- do_check_eq(this.type, perm.type);
- do_check_eq(this.pm.EXPIRE_TIME, perm.expireType);
- do_check_eq(this.now + 200000, perm.expireTime);
- break;
- default:
- do_throw("too many change notifications posted.");
- }
-
- } else if (data == "deleted") {
- var perm = subject.QueryInterface(Ci.nsIPermission);
- this.deletes++;
- switch (this.deletes) {
- case 1:
- do_check_eq(this.type, perm.type);
- break;
- default:
- do_throw("too many delete notifications posted.");
- }
-
- } else if (data == "cleared") {
- // only clear once: at the end
- do_check_false(this.cleared);
- do_check_eq(do_count_enumerator(Services.perms.enumerator), 0);
- this.cleared = true;
-
- } else {
- do_throw("unexpected data '" + data + "'!");
- }
-
- // Continue the test.
- do_run_generator(this.generator);
- },
-};
-
diff --git a/extensions/cookie/test/unit/test_permmanager_removeall.js b/extensions/cookie/test/unit/test_permmanager_removeall.js
deleted file mode 100644
index 54294a915..000000000
--- a/extensions/cookie/test/unit/test_permmanager_removeall.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function run_test() {
- // setup a profile directory
- var dir = do_get_profile();
-
- // initialize the permission manager service
- var pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- // get the db file
- var file = dir.clone();
- file.append("permissions.sqlite");
- do_check_true(file.exists());
-
- // corrupt the file
- var ostream = Cc["@mozilla.org/network/file-output-stream;1"].
- createInstance(Ci.nsIFileOutputStream);
- ostream.init(file, 0x02, 0o666, 0);
- var conv = Cc["@mozilla.org/intl/converter-output-stream;1"].
- createInstance(Ci.nsIConverterOutputStream);
- conv.init(ostream, "UTF-8", 0, 0);
- for (var i = 0; i < file.fileSize; ++i)
- conv.writeString("a");
- conv.close();
-
- // prepare an empty hostperm.1 file so that it can be used for importing
- var hostperm = dir.clone();
- hostperm.append("hostperm.1");
- ostream.init(hostperm, 0x02 | 0x08, 0o666, 0);
- ostream.close();
-
- // remove all should not throw
- pm.removeAll();
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_removeforapp.js b/extensions/cookie/test/unit/test_permmanager_removeforapp.js
deleted file mode 100644
index 152409de2..000000000
--- a/extensions/cookie/test/unit/test_permmanager_removeforapp.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function run_test() {
- // initialize the permission manager service
- let ssm = Services.scriptSecurityManager;
- let pm = Services.perms;
-
- function mkPrin(uri, appId, inIsolatedMozBrowser) {
- return ssm.createCodebasePrincipal(Services.io.newURI(uri, null, null),
- {appId: appId, inIsolatedMozBrowser: inIsolatedMozBrowser});
- }
-
- function checkPerms(perms) {
- perms.forEach((perm) => {
- // Look up the expected permission
- do_check_eq(pm.getPermissionObject(mkPrin(perm[0], perm[1], perm[2]),
- perm[3], true).capability,
- perm[4], "Permission is expected in the permission database");
- });
-
- // Count the entries
- let count = 0;
- let enumerator = Services.perms.enumerator;
- while (enumerator.hasMoreElements()) { enumerator.getNext(); count++; }
-
- do_check_eq(count, perms.length, "There should be the right number of permissions in the DB");
- }
-
- checkPerms([]);
-
- let permissions = [
- ['http://google.com', 1001, false, 'a', 1],
- ['http://google.com', 1001, false, 'b', 1],
- ['http://mozilla.com', 1001, false, 'b', 1],
- ['http://mozilla.com', 1001, false, 'a', 1],
-
- ['http://google.com', 1001, true, 'a', 1],
- ['http://google.com', 1001, true, 'b', 1],
- ['http://mozilla.com', 1001, true, 'b', 1],
- ['http://mozilla.com', 1001, true, 'a', 1],
-
- ['http://google.com', 1011, false, 'a', 1],
- ['http://google.com', 1011, false, 'b', 1],
- ['http://mozilla.com', 1011, false, 'b', 1],
- ['http://mozilla.com', 1011, false, 'a', 1],
- ];
-
- permissions.forEach((perm) => {
- pm.addFromPrincipal(mkPrin(perm[0], perm[1], perm[2]), perm[3], perm[4]);
- });
-
- checkPerms(permissions);
-
- let remove_false_perms = [
- ['http://google.com', 1011, false, 'a', 1],
- ['http://google.com', 1011, false, 'b', 1],
- ['http://mozilla.com', 1011, false, 'b', 1],
- ['http://mozilla.com', 1011, false, 'a', 1],
- ];
-
- let attrs = { appId: 1001 };
- pm.removePermissionsWithAttributes(JSON.stringify(attrs));
- checkPerms(remove_false_perms);
-
- let restore = [
- ['http://google.com', 1001, false, 'a', 1],
- ['http://google.com', 1001, false, 'b', 1],
- ['http://mozilla.com', 1001, false, 'b', 1],
- ['http://mozilla.com', 1001, false, 'a', 1],
-
- ['http://google.com', 1001, true, 'a', 1],
- ['http://google.com', 1001, true, 'b', 1],
- ['http://mozilla.com', 1001, true, 'b', 1],
- ['http://mozilla.com', 1001, true, 'a', 1],
- ];
-
- restore.forEach((perm) => {
- pm.addFromPrincipal(mkPrin(perm[0], perm[1], perm[2]), perm[3], perm[4]);
- });
- checkPerms(permissions);
-
- let remove_true_perms = [
- ['http://google.com', 1001, false, 'a', 1],
- ['http://google.com', 1001, false, 'b', 1],
- ['http://mozilla.com', 1001, false, 'b', 1],
- ['http://mozilla.com', 1001, false, 'a', 1],
-
- ['http://google.com', 1011, false, 'a', 1],
- ['http://google.com', 1011, false, 'b', 1],
- ['http://mozilla.com', 1011, false, 'b', 1],
- ['http://mozilla.com', 1011, false, 'a', 1],
- ];
-
- attrs = { appId: 1001,
- inIsolatedMozBrowser: true };
- pm.removePermissionsWithAttributes(JSON.stringify(attrs));
- checkPerms(remove_true_perms);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_removepermission.js b/extensions/cookie/test/unit/test_permmanager_removepermission.js
deleted file mode 100644
index e8f5817e2..000000000
--- a/extensions/cookie/test/unit/test_permmanager_removepermission.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function run_test() {
- // initialize the permission manager service
- let pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- do_check_eq(perm_count(), 0);
-
- // add some permissions
- let uri = NetUtil.newURI("http://amazon.com:8080/foobarbaz", null, null);
- let uri2 = NetUtil.newURI("http://google.com:2048/quxx", null, null);
-
- pm.add(uri, "apple", 0);
- pm.add(uri, "apple", 3);
- pm.add(uri, "pear", 3);
- pm.add(uri, "pear", 1);
- pm.add(uri, "cucumber", 1);
- pm.add(uri, "cucumber", 1);
- pm.add(uri, "cucumber", 1);
-
- pm.add(uri2, "apple", 2);
- pm.add(uri2, "pear", 0);
- pm.add(uri2, "pear", 2);
-
- // Make sure that removePermission doesn't remove more than one permission each time
- do_check_eq(perm_count(), 5);
-
- remove_one_by_type("apple");
- do_check_eq(perm_count(), 4);
-
- remove_one_by_type("apple");
- do_check_eq(perm_count(), 3);
-
- remove_one_by_type("pear");
- do_check_eq(perm_count(), 2);
-
- remove_one_by_type("cucumber");
- do_check_eq(perm_count(), 1);
-
- remove_one_by_type("pear");
- do_check_eq(perm_count(), 0);
-
-
- function perm_count() {
- let enumerator = pm.enumerator;
- let count = 0;
- while (enumerator.hasMoreElements()) {
- count++;
- enumerator.getNext();
- }
-
- return count;
- }
-
- function remove_one_by_type(type) {
- let enumerator = pm.enumerator;
- while (enumerator.hasMoreElements()) {
- let it = enumerator.getNext().QueryInterface(Ci.nsIPermission);
- if (it.type == type) {
- pm.removePermission(it);
- break;
- }
- }
- }
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_removesince.js b/extensions/cookie/test/unit/test_permmanager_removesince.js
deleted file mode 100644
index 719f7f6f6..000000000
--- a/extensions/cookie/test/unit/test_permmanager_removesince.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test that removing permissions since a specified time behaves as expected.
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function continue_test()
-{
- do_run_generator(test_generator);
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- let pm = Services.perms;
-
- // to help with testing edge-cases, we will arrange for .removeAllSince to
- // remove *all* permissions from one principal and one permission from another.
- let permURI1 = NetUtil.newURI("http://example.com");
- let principal1 = Services.scriptSecurityManager.createCodebasePrincipal(permURI1, {});
-
- let permURI2 = NetUtil.newURI("http://example.org");
- let principal2 = Services.scriptSecurityManager.createCodebasePrincipal(permURI2, {});
-
- // add a permission now - this isn't going to be removed.
- pm.addFromPrincipal(principal1, "test/remove-since", 1);
-
- // sleep briefly, then record the time - we'll remove all since then.
- do_timeout(20, continue_test);
- yield;
-
- let since = Number(Date.now());
-
- // *sob* - on Windows at least, the now recorded by nsPermissionManager.cpp
- // might be a couple of ms *earlier* than what JS sees. So another sleep
- // to ensure our |since| is greater than the time of the permissions we
- // are now adding. Sadly this means we'll never be able to test when since
- // exactly equals the modTime, but there you go...
- do_timeout(20, continue_test);
- yield;
-
- // add another item - this second one should get nuked.
- pm.addFromPrincipal(principal1, "test/remove-since-2", 1);
-
- // add 2 items for the second principal - both will be removed.
- pm.addFromPrincipal(principal2, "test/remove-since", 1);
- pm.addFromPrincipal(principal2, "test/remove-since-2", 1);
-
- // do the removal.
- pm.removeAllSince(since);
-
- // principal1 - the first one should remain.
- do_check_eq(1, pm.testPermissionFromPrincipal(principal1, "test/remove-since"));
- // but the second should have been removed.
- do_check_eq(0, pm.testPermissionFromPrincipal(principal1, "test/remove-since-2"));
-
- // principal2 - both should have been removed.
- do_check_eq(0, pm.testPermissionFromPrincipal(principal2, "test/remove-since"));
- do_check_eq(0, pm.testPermissionFromPrincipal(principal2, "test/remove-since-2"));
-
- do_finish_generator_test(test_generator);
-}
diff --git a/extensions/cookie/test/unit/test_permmanager_subdomains.js b/extensions/cookie/test/unit/test_permmanager_subdomains.js
deleted file mode 100644
index 4e78e4d46..000000000
--- a/extensions/cookie/test/unit/test_permmanager_subdomains.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function getPrincipalFromURI(aURI) {
- let ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- let uri = NetUtil.newURI(aURI);
- return ssm.createCodebasePrincipal(uri, {});
-}
-
-function run_test() {
- var pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
-
- // Adds a permission to a sub-domain. Checks if it is working.
- let sub1Principal = getPrincipalFromURI("http://sub1.example.com");
- pm.addFromPrincipal(sub1Principal, "test/subdomains", pm.ALLOW_ACTION, 0, 0);
- do_check_eq(pm.testPermissionFromPrincipal(sub1Principal, "test/subdomains"), pm.ALLOW_ACTION);
-
- // A sub-sub-domain should get the permission.
- let subsubPrincipal = getPrincipalFromURI("http://sub.sub1.example.com");
- do_check_eq(pm.testPermissionFromPrincipal(subsubPrincipal, "test/subdomains"), pm.ALLOW_ACTION);
-
- // Another sub-domain shouldn't get the permission.
- let sub2Principal = getPrincipalFromURI("http://sub2.example.com");
- do_check_eq(pm.testPermissionFromPrincipal(sub2Principal, "test/subdomains"), pm.UNKNOWN_ACTION);
-
- // Remove current permissions.
- pm.removeFromPrincipal(sub1Principal, "test/subdomains");
- do_check_eq(pm.testPermissionFromPrincipal(sub1Principal, "test/subdomains"), pm.UNKNOWN_ACTION);
-
- // Adding the permission to the main domain. Checks if it is working.
- let mainPrincipal = getPrincipalFromURI("http://example.com");
- pm.addFromPrincipal(mainPrincipal, "test/subdomains", pm.ALLOW_ACTION, 0, 0);
- do_check_eq(pm.testPermissionFromPrincipal(mainPrincipal, "test/subdomains"), pm.ALLOW_ACTION);
-
- // All sub-domains should have the permission now.
- do_check_eq(pm.testPermissionFromPrincipal(sub1Principal, "test/subdomains"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(sub2Principal, "test/subdomains"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(subsubPrincipal, "test/subdomains"), pm.ALLOW_ACTION);
-
- // Remove current permissions.
- pm.removeFromPrincipal(mainPrincipal, "test/subdomains");
- do_check_eq(pm.testPermissionFromPrincipal(mainPrincipal, "test/subdomains"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(sub1Principal, "test/subdomains"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(sub2Principal, "test/subdomains"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(subsubPrincipal, "test/subdomains"), pm.UNKNOWN_ACTION);
-
- // A sanity check that the previous implementation wasn't passing...
- let crazyPrincipal = getPrincipalFromURI("http://com");
- pm.addFromPrincipal(crazyPrincipal, "test/subdomains", pm.ALLOW_ACTION, 0, 0);
- do_check_eq(pm.testPermissionFromPrincipal(crazyPrincipal, "test/subdomains"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(mainPrincipal, "test/subdomains"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(sub1Principal, "test/subdomains"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(sub2Principal, "test/subdomains"), pm.UNKNOWN_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(subsubPrincipal, "test/subdomains"), pm.UNKNOWN_ACTION);
-}
diff --git a/extensions/cookie/test/unit/test_schema_2_migration.js b/extensions/cookie/test/unit/test_schema_2_migration.js
deleted file mode 100644
index 7dc5e823c..000000000
--- a/extensions/cookie/test/unit/test_schema_2_migration.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test cookie database migration from version 2 (Gecko 1.9.3) to the current
-// version, presently 4 (Gecko 2.0).
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Create a schema 2 database.
- let schema2db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
-
- let now = Date.now() * 1000;
- let futureExpiry = Math.round(now / 1e6 + 1000);
- let pastExpiry = Math.round(now / 1e6 - 1000);
-
- // Populate it, with:
- // 1) Unexpired, unique cookies.
- for (let i = 0; i < 20; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "foo.com", "/",
- futureExpiry, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
-
- // 2) Expired, unique cookies.
- for (let i = 20; i < 40; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "bar.com", "/",
- pastExpiry, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
-
- // 3) Many copies of the same cookie, some of which have expired and
- // some of which have not.
- for (let i = 40; i < 45; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- futureExpiry + i, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
- for (let i = 45; i < 50; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- pastExpiry - i, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
- for (let i = 50; i < 55; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- futureExpiry - i, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
- for (let i = 55; i < 60; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- pastExpiry + i, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
-
- // Close it.
- schema2db.close();
- schema2db = null;
-
- // Load the database, forcing migration to the current schema version. Then
- // test the expected set of cookies:
- // 1) All unexpired, unique cookies exist.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 20);
-
- // 2) All expired, unique cookies exist.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 20);
-
- // 3) Only one cookie remains, and it's the one with the highest expiration
- // time.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("baz.com"), 1);
- let enumerator = Services.cookiemgr.getCookiesFromHost("baz.com", {});
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- do_check_eq(cookie.expiry, futureExpiry + 44);
-
- do_close_profile(test_generator);
- yield;
-
- // Open the database so we can execute some more schema 2 statements on it.
- schema2db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
-
- // Populate it with more cookies.
- for (let i = 60; i < 80; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "foo.com", "/",
- futureExpiry, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
- for (let i = 80; i < 100; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "cat.com", "/",
- futureExpiry, now, now + i, false, false, false);
-
- schema2db.insertCookie(cookie);
- }
-
- // Attempt to add a cookie with the same (name, host, path) values as another
- // cookie. This should succeed since we have a REPLACE clause for conflict on
- // the unique index.
- cookie = new Cookie("oh", "hai", "baz.com", "/",
- futureExpiry, now, now + 100, false, false, false);
-
- schema2db.insertCookie(cookie);
-
- // Check that there is, indeed, a singular cookie for baz.com.
- do_check_eq(do_count_cookies_in_db(schema2db.db, "baz.com"), 1);
-
- // Close it.
- schema2db.close();
- schema2db = null;
-
- // Back up the database, so we can test both asynchronous and synchronous
- // loading separately.
- let file = do_get_cookie_file(profile);
- let copy = profile.clone();
- copy.append("cookies.sqlite.copy");
- file.copyTo(null, copy.leafName);
-
- // Load the database asynchronously, forcing a purge of the newly-added
- // cookies. (Their baseDomain column will be NULL.)
- do_load_profile(test_generator);
- yield;
-
- // Test the expected set of cookies.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 20);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 20);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("baz.com"), 0);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("cat.com"), 0);
-
- do_close_profile(test_generator);
- yield;
-
- // Open the database and prove that they were deleted.
- schema2db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
- do_check_eq(do_count_cookies_in_db(schema2db.db), 40);
- do_check_eq(do_count_cookies_in_db(schema2db.db, "foo.com"), 20);
- do_check_eq(do_count_cookies_in_db(schema2db.db, "bar.com"), 20);
- schema2db.close();
-
- // Copy the database back.
- file.remove(false);
- copy.copyTo(null, file.leafName);
-
- // Load the database host-at-a-time.
- do_load_profile();
-
- // Test the expected set of cookies.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 20);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 20);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("baz.com"), 0);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("cat.com"), 0);
-
- do_close_profile(test_generator);
- yield;
-
- // Open the database and prove that they were deleted.
- schema2db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
- do_check_eq(do_count_cookies_in_db(schema2db.db), 40);
- do_check_eq(do_count_cookies_in_db(schema2db.db, "foo.com"), 20);
- do_check_eq(do_count_cookies_in_db(schema2db.db, "bar.com"), 20);
- schema2db.close();
-
- // Copy the database back.
- file.remove(false);
- copy.copyTo(null, file.leafName);
-
- // Load the database synchronously, in its entirety.
- do_load_profile();
- do_check_eq(do_count_cookies(), 40);
-
- // Test the expected set of cookies.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 20);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 20);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("baz.com"), 0);
- do_check_eq(Services.cookiemgr.countCookiesFromHost("cat.com"), 0);
-
- do_close_profile(test_generator);
- yield;
-
- // Open the database and prove that they were deleted.
- schema2db = new CookieDatabaseConnection(do_get_cookie_file(profile), 2);
- do_check_eq(do_count_cookies_in_db(schema2db.db), 40);
- do_check_eq(do_count_cookies_in_db(schema2db.db, "foo.com"), 20);
- do_check_eq(do_count_cookies_in_db(schema2db.db, "bar.com"), 20);
- schema2db.close();
-
- finish_test();
-}
-
diff --git a/extensions/cookie/test/unit/test_schema_3_migration.js b/extensions/cookie/test/unit/test_schema_3_migration.js
deleted file mode 100644
index 40a23f7e4..000000000
--- a/extensions/cookie/test/unit/test_schema_3_migration.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Test cookie database migration from version 3 (prerelease Gecko 2.0) to the
-// current version, presently 4 (Gecko 2.0).
-
-var test_generator = do_run_test();
-
-function run_test() {
- do_test_pending();
- test_generator.next();
-}
-
-function finish_test() {
- do_execute_soon(function() {
- test_generator.close();
- do_test_finished();
- });
-}
-
-function do_run_test() {
- // Set up a profile.
- let profile = do_get_profile();
-
- // Create a schema 3 database.
- let schema3db = new CookieDatabaseConnection(do_get_cookie_file(profile), 3);
-
- let now = Date.now() * 1000;
- let futureExpiry = Math.round(now / 1e6 + 1000);
- let pastExpiry = Math.round(now / 1e6 - 1000);
-
- // Populate it, with:
- // 1) Unexpired, unique cookies.
- for (let i = 0; i < 20; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "foo.com", "/",
- futureExpiry, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
-
- // 2) Expired, unique cookies.
- for (let i = 20; i < 40; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "bar.com", "/",
- pastExpiry, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
-
- // 3) Many copies of the same cookie, some of which have expired and
- // some of which have not.
- for (let i = 40; i < 45; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- futureExpiry + i, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
- for (let i = 45; i < 50; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- pastExpiry - i, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
- for (let i = 50; i < 55; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- futureExpiry - i, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
- for (let i = 55; i < 60; ++i) {
- let cookie = new Cookie("oh", "hai", "baz.com", "/",
- pastExpiry + i, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
-
- // Close it.
- schema3db.close();
- schema3db = null;
-
- // Load the database, forcing migration to the current schema version. Then
- // test the expected set of cookies:
- // 1) All unexpired, unique cookies exist.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("foo.com"), 20);
-
- // 2) All expired, unique cookies exist.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("bar.com"), 20);
-
- // 3) Only one cookie remains, and it's the one with the highest expiration
- // time.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("baz.com"), 1);
- let enumerator = Services.cookiemgr.getCookiesFromHost("baz.com", {});
- let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- do_check_eq(cookie.expiry, futureExpiry + 44);
-
- do_close_profile(test_generator);
- yield;
-
- // Open the database so we can execute some more schema 3 statements on it.
- schema3db = new CookieDatabaseConnection(do_get_cookie_file(profile), 3);
-
- // Populate it with more cookies.
- for (let i = 60; i < 80; ++i) {
- let cookie = new Cookie("oh" + i, "hai", "cat.com", "/",
- futureExpiry, now, now + i, false, false, false);
-
- schema3db.insertCookie(cookie);
- }
-
- // Close it.
- schema3db.close();
- schema3db = null;
-
- // Load the database. The cookies added immediately prior will have a NULL
- // creationTime column.
- do_load_profile();
-
- // Test the expected set of cookies.
- do_check_eq(Services.cookiemgr.countCookiesFromHost("cat.com"), 20);
- enumerator = Services.cookiemgr.getCookiesFromHost("cat.com", {});
- cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
- do_check_eq(cookie.creationTime, 0);
-
- finish_test();
-}
-
diff --git a/extensions/cookie/test/unit/xpcshell.ini b/extensions/cookie/test/unit/xpcshell.ini
deleted file mode 100644
index e20d0142c..000000000
--- a/extensions/cookie/test/unit/xpcshell.ini
+++ /dev/null
@@ -1,48 +0,0 @@
-[DEFAULT]
-head = head_cookies.js
-tail =
-skip-if = toolkit == 'android'
-support-files =
- cookieprompt.js
- cookieprompt.manifest
-
-[test_bug526789.js]
-[test_bug650522.js]
-[test_bug667087.js]
-[test_cookies_async_failure.js]
-[test_cookies_persistence.js]
-skip-if = true # Bug 863738
-[test_cookies_privatebrowsing.js]
-[test_cookies_profile_close.js]
-[test_cookies_read.js]
-[test_cookies_sync_failure.js]
-[test_cookies_thirdparty.js]
-[test_cookies_thirdparty_session.js]
-[test_domain_eviction.js]
-[test_eviction.js]
-[test_permmanager_defaults.js]
-[test_permmanager_expiration.js]
-[test_permmanager_getAllForURI.js]
-[test_permmanager_getPermissionObject.js]
-[test_permmanager_notifications.js]
-[test_permmanager_removeall.js]
-[test_permmanager_removesince.js]
-[test_permmanager_removeforapp.js]
-[test_permmanager_load_invalid_entries.js]
-skip-if = debug == true
-[test_permmanager_idn.js]
-[test_permmanager_subdomains.js]
-[test_permmanager_local_files.js]
-[test_permmanager_cleardata.js]
-[test_schema_2_migration.js]
-[test_schema_3_migration.js]
-[test_permmanager_removepermission.js]
-[test_permmanager_matchesuri.js]
-[test_permmanager_matches.js]
-[test_permmanager_migrate_4-7.js]
-[test_permmanager_migrate_5-7a.js]
-[test_permmanager_migrate_5-7b.js]
-[test_permmanager_migrate_6-7a.js]
-[test_permmanager_migrate_6-7b.js]
-[test_permmanager_migrate_4-7_no_history.js]
-[test_permmanager_migrate_7-8.js]
diff --git a/extensions/cookie/test/unit_ipc/test_child.js b/extensions/cookie/test/unit_ipc/test_child.js
deleted file mode 100644
index 40a48d8b8..000000000
--- a/extensions/cookie/test/unit_ipc/test_child.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-var Cr = Components.results;
-
-var gIoService = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
-
-function isParentProcess() {
- let appInfo = Cc["@mozilla.org/xre/app-info;1"];
- return (!appInfo || appInfo.getService(Ci.nsIXULRuntime).processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT);
-}
-
-function getPrincipalForURI(aURI) {
- var uri = gIoService.newURI(aURI, null, null);
- var ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- return ssm.createCodebasePrincipal(uri, {});
-}
-
-function run_test() {
- if (!isParentProcess()) {
- const Ci = Components.interfaces;
- const Cc = Components.classes;
-
- var mM = Cc["@mozilla.org/childprocessmessagemanager;1"].
- getService(Ci.nsISyncMessageSender);
-
- var messageListener = {
- receiveMessage: function(aMessage) {
- switch(aMessage.name) {
- case "TESTING:Stage2A":
- // Permissions created after the child is present
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2"), pm.DENY_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.org"), "cookie1"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.com"), "cookie2"), pm.DENY_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.net"), "cookie3"), pm.ALLOW_ACTION);
-
- mM.sendAsyncMessage("TESTING:Stage3");
- break;
-
- }
- return true;
- },
- };
-
- mM.addMessageListener("TESTING:Stage2A", messageListener);
-
- // Permissions created before the child is present
- var pm = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1"), pm.ALLOW_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2"), pm.DENY_ACTION);
- do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3"), pm.ALLOW_ACTION);
-
- mM.sendAsyncMessage("TESTING:Stage2");
- }
-}
-
diff --git a/extensions/cookie/test/unit_ipc/test_parent.js b/extensions/cookie/test/unit_ipc/test_parent.js
deleted file mode 100644
index 5423dd594..000000000
--- a/extensions/cookie/test/unit_ipc/test_parent.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-var Cr = Components.results;
-
-var gIoService = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
-
-function isParentProcess() {
- let appInfo = Cc["@mozilla.org/xre/app-info;1"];
- return (!appInfo || appInfo.getService(Ci.nsIXULRuntime).processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT);
-}
-
-function getPrincipalForURI(aURI) {
- var uri = gIoService.newURI(aURI, null, null);
- var ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
- .getService(Ci.nsIScriptSecurityManager);
- return ssm.createCodebasePrincipal(uri, {});
-}
-
-function run_test() {
- if (isParentProcess()) {
- var pm = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
-
- // Permissions created before the child is present
- pm.addFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1", pm.ALLOW_ACTION, pm.EXPIRE_NEVER, 0);
- pm.addFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2", pm.DENY_ACTION, pm.EXPIRE_SESSION, 0);
- pm.addFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3", pm.ALLOW_ACTION, pm.EXPIRE_TIME, Date.now() + 1000*60*60*24);
-
- var mM = Cc["@mozilla.org/parentprocessmessagemanager;1"].
- getService(Ci.nsIMessageBroadcaster);
-
- var messageListener = {
- receiveMessage: function(aMessage) {
- switch(aMessage.name) {
- case "TESTING:Stage2":
- // Permissions created after the child is present
- pm.addFromPrincipal(getPrincipalForURI("http://firefox.org"), "cookie1", pm.ALLOW_ACTION, pm.EXPIRE_NEVER, 0);
- pm.addFromPrincipal(getPrincipalForURI("http://firefox.com"), "cookie2", pm.DENY_ACTION, pm.EXPIRE_SESSION, 0);
- pm.addFromPrincipal(getPrincipalForURI("http://firefox.net"), "cookie3", pm.ALLOW_ACTION, pm.EXPIRE_TIME, Date.now() + 1000*60*60*24);
- mM.broadcastAsyncMessage("TESTING:Stage2A");
- break;
-
- case "TESTING:Stage3":
- do_test_finished();
- break;
- }
- return true;
- },
- };
-
- mM.addMessageListener("TESTING:Stage2", messageListener);
- mM.addMessageListener("TESTING:Stage3", messageListener);
-
- do_test_pending();
- do_load_child_test_harness();
- run_test_in_child("test_child.js");
- }
-}
-
diff --git a/extensions/cookie/test/unit_ipc/xpcshell.ini b/extensions/cookie/test/unit_ipc/xpcshell.ini
deleted file mode 100644
index 5640ea0e3..000000000
--- a/extensions/cookie/test/unit_ipc/xpcshell.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[DEFAULT]
-head =
-tail =
-skip-if = toolkit == 'android'
-
-[test_child.js]
-[test_parent.js]
diff --git a/extensions/permissions/moz.build b/extensions/permissions/moz.build
deleted file mode 100644
index 19a09bd72..000000000
--- a/extensions/permissions/moz.build
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-UNIFIED_SOURCES += [
- 'nsContentBlocker.cpp',
- 'nsModuleFactory.cpp',
-]
-
-FINAL_LIBRARY = 'xul'
diff --git a/extensions/permissions/nsModuleFactory.cpp b/extensions/permissions/nsModuleFactory.cpp
deleted file mode 100644
index a8917c463..000000000
--- a/extensions/permissions/nsModuleFactory.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/ModuleUtils.h"
-#include "nsIServiceManager.h"
-#include "nsContentBlocker.h"
-#include "nsXPIDLString.h"
-
-// Define the constructor function for the objects
-NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsContentBlocker, Init)
-
-NS_DEFINE_NAMED_CID(NS_CONTENTBLOCKER_CID);
-
-static const mozilla::Module::CIDEntry kPermissionsCIDs[] = {
- { &kNS_CONTENTBLOCKER_CID, false, nullptr, nsContentBlockerConstructor },
- { nullptr }
-};
-
-static const mozilla::Module::ContractIDEntry kPermissionsContracts[] = {
- { NS_CONTENTBLOCKER_CONTRACTID, &kNS_CONTENTBLOCKER_CID },
- { nullptr }
-};
-
-static const mozilla::Module::CategoryEntry kPermissionsCategories[] = {
- { "content-policy", NS_CONTENTBLOCKER_CONTRACTID, NS_CONTENTBLOCKER_CONTRACTID },
- { nullptr }
-};
-
-static const mozilla::Module kPermissionsModule = {
- mozilla::Module::kVersion,
- kPermissionsCIDs,
- kPermissionsContracts,
- kPermissionsCategories
-};
-
-NSMODULE_DEFN(nsPermissionsModule) = &kPermissionsModule;
diff --git a/layout/build/moz.build b/layout/build/moz.build
index cb606d2a6..e0f7750e7 100644
--- a/layout/build/moz.build
+++ b/layout/build/moz.build
@@ -28,6 +28,7 @@ LOCAL_INCLUDES += [
'../view',
'../xul',
'/caps',
+ '/components/permissions/src',
'/docshell/base',
'/dom/audiochannel',
'/dom/base',
@@ -52,7 +53,6 @@ LOCAL_INCLUDES += [
'/editor/composer',
'/editor/txmgr',
'/editor/txtsvc',
- '/extensions/cookie',
'/js/xpconnect/loader',
'/js/xpconnect/src',
'/netwerk/base',
diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp
index e9095ce03..ab48ceca9 100644
--- a/layout/build/nsLayoutStatics.cpp
+++ b/layout/build/nsLayoutStatics.cpp
@@ -273,9 +273,8 @@ nsLayoutStatics::Initialize()
ProcessPriorityManager::Init();
-#ifdef MOZ_PERMISSIONS
nsPermissionManager::ClearOriginDataObserverInit();
-#endif
+
nsCookieService::AppClearDataObserverInit();
nsApplicationCacheService::AppClearDataObserverInit();
diff --git a/netwerk/base/moz.build b/netwerk/base/moz.build
index 3ec17b2b2..4b8cc286d 100644
--- a/netwerk/base/moz.build
+++ b/netwerk/base/moz.build
@@ -74,8 +74,6 @@ XPIDL_SOURCES += [
'nsINullChannel.idl',
'nsIParentChannel.idl',
'nsIParentRedirectingChannel.idl',
- 'nsIPermission.idl',
- 'nsIPermissionManager.idl',
'nsIPrivateBrowsingChannel.idl',
'nsIProgressEventSink.idl',
'nsIPrompt.idl',
diff --git a/netwerk/cookie/moz.build b/netwerk/cookie/moz.build
index 205795050..c51d53816 100644
--- a/netwerk/cookie/moz.build
+++ b/netwerk/cookie/moz.build
@@ -9,7 +9,6 @@ XPIDL_SOURCES += [
'nsICookie2.idl',
'nsICookieManager.idl',
'nsICookieManager2.idl',
- 'nsICookiePermission.idl',
'nsICookieService.idl',
]
diff --git a/system/moz.configure b/system/moz.configure
index ef143a60b..2c4a16fb1 100644
--- a/system/moz.configure
+++ b/system/moz.configure
@@ -328,16 +328,6 @@ set_config('MOZ_FMP4', fmp4)
set_define('MOZ_FMP4', fmp4)
add_old_configure_assignment('MOZ_FMP4', fmp4)
-# Permissions system
-# ==============================================================
-option(name='--disable-permissions',
- help='Disable permissions (popup and cookie blocking)')
-
-moz_permissions = depends_if('--disable-permissions')(lambda _: True)
-
-set_config('MOZ_PERMISSIONS', moz_permissions)
-set_define('MOZ_PERMISSIONS', moz_permissions)
-
# gpsd support
# ==============================================================
option('--enable-gpsd', env='MOZ_GPSD',
diff --git a/system/toolkit.mozbuild b/system/toolkit.mozbuild
index d9d488f49..0c16dbfac 100644
--- a/system/toolkit.mozbuild
+++ b/system/toolkit.mozbuild
@@ -46,12 +46,6 @@ if CONFIG['MOZ_MAILNEWS']:
'/mailnews',
]
-if CONFIG['MOZ_PERMISSIONS']:
- DIRS += [
- '/extensions/cookie',
- '/extensions/permissions',
- ]
-
if CONFIG['MOZ_WEBRTC']:
DIRS += [
'/media/webrtc',
diff --git a/toolkit/locales/jar.mn b/toolkit/locales/jar.mn
index 9d7f7576c..40fafb69a 100644
--- a/toolkit/locales/jar.mn
+++ b/toolkit/locales/jar.mn
@@ -131,8 +131,8 @@
locale/@AB_CD@/alerts/alert.properties (/components/alerts/locale/alert.properties)
% locale cookie @AB_CD@ %locale/@AB_CD@/cookie/
- locale/@AB_CD@/cookie/cookieAcceptDialog.dtd (/components/cookie/locale/cookieAcceptDialog.dtd)
- locale/@AB_CD@/cookie/cookieAcceptDialog.properties (/components/cookie/locale/cookieAcceptDialog.properties)
+ locale/@AB_CD@/cookie/cookieAcceptDialog.dtd (/components/permissions/locale/cookieAcceptDialog.dtd)
+ locale/@AB_CD@/cookie/cookieAcceptDialog.properties (/components/permissions/locale/cookieAcceptDialog.properties)
% locale formautofill @AB_CD@ %locale/@AB_CD@/formautofill/
locale/@AB_CD@/formautofill/requestAutocomplete.dtd (/components/formautofill/locale/requestAutocomplete.dtd)