From 474fcd236357333c20350de901b74e19e2e3a389 Mon Sep 17 00:00:00 2001 From: Michael Layzell Date: Thu, 2 Jul 2015 16:50:26 -0400 Subject: [PATCH] Bug 1172080 - Part 2: Use ^ instead of ! to delimit originAttributes from the URI in nsIPrincipal.origin, r=bholley --- caps/BasePrincipal.cpp | 6 ++--- caps/tests/unit/test_origin.js | 26 +++++++++---------- dom/apps/tests/unit/test_moziapplication.js | 2 +- .../test/unit/test_permmanager_defaults.js | 2 +- .../test/unit/test_permmanager_migrate_4-5.js | 20 +++++++------- toolkit/modules/BrowserUtils.jsm | 2 +- 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/caps/BasePrincipal.cpp b/caps/BasePrincipal.cpp index 3cf84fa26913..2b21258ec9fe 100644 --- a/caps/BasePrincipal.cpp +++ b/caps/BasePrincipal.cpp @@ -51,7 +51,7 @@ OriginAttributes::CreateSuffix(nsACString& aStr) const params->Serialize(value); if (!value.IsEmpty()) { - aStr.AppendLiteral("!"); + aStr.AppendLiteral("^"); aStr.Append(NS_ConvertUTF16toUTF8(value)); } } @@ -117,7 +117,7 @@ OriginAttributes::PopulateFromSuffix(const nsACString& aStr) return true; } - if (aStr[0] != '!') { + if (aStr[0] != '^') { return false; } @@ -134,7 +134,7 @@ OriginAttributes::PopulateFromOrigin(const nsACString& aOrigin, { // RFindChar is only available on nsCString. nsCString origin(aOrigin); - int32_t pos = origin.RFindChar('!'); + int32_t pos = origin.RFindChar('^'); if (pos == kNotFound) { aOriginNoSuffix = origin; diff --git a/caps/tests/unit/test_origin.js b/caps/tests/unit/test_origin.js index ef462719e7c4..020ae3a24043 100644 --- a/caps/tests/unit/test_origin.js +++ b/caps/tests/unit/test_origin.js @@ -68,33 +68,33 @@ function run_test() { // Just app. var exampleOrg_app = ssm.createCodebasePrincipal(makeURI('http://example.org'), {appId: 42}); var nullPrin_app = ssm.createNullPrincipal({appId: 42}); - checkOriginAttributes(exampleOrg_app, {appId: 42}, '!appId=42'); - checkOriginAttributes(nullPrin_app, {appId: 42}, '!appId=42'); - do_check_eq(exampleOrg_app.origin, 'http://example.org!appId=42'); + checkOriginAttributes(exampleOrg_app, {appId: 42}, '^appId=42'); + checkOriginAttributes(nullPrin_app, {appId: 42}, '^appId=42'); + do_check_eq(exampleOrg_app.origin, 'http://example.org^appId=42'); // Just browser. var exampleOrg_browser = ssm.createCodebasePrincipal(makeURI('http://example.org'), {inBrowser: true}); var nullPrin_browser = ssm.createNullPrincipal({inBrowser: true}); - checkOriginAttributes(exampleOrg_browser, {inBrowser: true}, '!inBrowser=1'); - checkOriginAttributes(nullPrin_browser, {inBrowser: true}, '!inBrowser=1'); - do_check_eq(exampleOrg_browser.origin, 'http://example.org!inBrowser=1'); + checkOriginAttributes(exampleOrg_browser, {inBrowser: true}, '^inBrowser=1'); + checkOriginAttributes(nullPrin_browser, {inBrowser: true}, '^inBrowser=1'); + do_check_eq(exampleOrg_browser.origin, 'http://example.org^inBrowser=1'); // App and browser. var exampleOrg_appBrowser = ssm.createCodebasePrincipal(makeURI('http://example.org'), {inBrowser: true, appId: 42}); var nullPrin_appBrowser = ssm.createNullPrincipal({inBrowser: true, appId: 42}); - checkOriginAttributes(exampleOrg_appBrowser, {appId: 42, inBrowser: true}, '!appId=42&inBrowser=1'); - checkOriginAttributes(nullPrin_appBrowser, {appId: 42, inBrowser: true}, '!appId=42&inBrowser=1'); - do_check_eq(exampleOrg_appBrowser.origin, 'http://example.org!appId=42&inBrowser=1'); + checkOriginAttributes(exampleOrg_appBrowser, {appId: 42, inBrowser: true}, '^appId=42&inBrowser=1'); + checkOriginAttributes(nullPrin_appBrowser, {appId: 42, inBrowser: true}, '^appId=42&inBrowser=1'); + do_check_eq(exampleOrg_appBrowser.origin, 'http://example.org^appId=42&inBrowser=1'); // App and browser, different domain. var exampleCom_appBrowser = ssm.createCodebasePrincipal(makeURI('https://www.example.com:123'), {appId: 42, inBrowser: true}); - checkOriginAttributes(exampleCom_appBrowser, {appId: 42, inBrowser: true}, '!appId=42&inBrowser=1'); - do_check_eq(exampleCom_appBrowser.origin, 'https://www.example.com:123!appId=42&inBrowser=1'); + checkOriginAttributes(exampleCom_appBrowser, {appId: 42, inBrowser: true}, '^appId=42&inBrowser=1'); + do_check_eq(exampleCom_appBrowser.origin, 'https://www.example.com:123^appId=42&inBrowser=1'); // Addon. var exampleOrg_addon = ssm.createCodebasePrincipal(makeURI('http://example.org'), {addonId: 'dummy'}); - checkOriginAttributes(exampleOrg_addon, { addonId: "dummy" }, '!addonId=dummy'); - do_check_eq(exampleOrg_addon.origin, 'http://example.org!addonId=dummy'); + checkOriginAttributes(exampleOrg_addon, { addonId: "dummy" }, '^addonId=dummy'); + do_check_eq(exampleOrg_addon.origin, 'http://example.org^addonId=dummy'); // Check that all of the above are cross-origin. checkCrossOrigin(exampleOrg_app, exampleOrg); diff --git a/dom/apps/tests/unit/test_moziapplication.js b/dom/apps/tests/unit/test_moziapplication.js index b5609d8564c1..b7989f82e04a 100644 --- a/dom/apps/tests/unit/test_moziapplication.js +++ b/dom/apps/tests/unit/test_moziapplication.js @@ -51,7 +51,7 @@ add_test(() => { }); Assert.ok(mozapp.principal, "app principal should exist"); - let expectedPrincipalOrigin = app.origin + "!appId=" + app.localId; + let expectedPrincipalOrigin = app.origin + "^appId=" + app.localId; Assert.equal(mozapp.principal.origin, expectedPrincipalOrigin, "app principal origin ok"); Assert.equal(mozapp.principal.appId, app.localId, "app principal appId ok"); diff --git a/extensions/cookie/test/unit/test_permmanager_defaults.js b/extensions/cookie/test/unit/test_permmanager_defaults.js index 91874a086707..65ea18f58b24 100644 --- a/extensions/cookie/test/unit/test_permmanager_defaults.js +++ b/extensions/cookie/test/unit/test_permmanager_defaults.js @@ -40,7 +40,7 @@ add_task(function* do_test() { 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"); + 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. diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_4-5.js b/extensions/cookie/test/unit/test_permmanager_migrate_4-5.js index f3b816817360..253db93dbacc 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_4-5.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_4-5.js @@ -94,33 +94,33 @@ add_task(function test() { // However, permissions for subdomains of foo.com will be present for both http:// and https://, // as they do not apply to any entry in the history // ["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], + // ["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!appId=1000", "A", 1, 0, 0], - ["https://foo.com!appId=2000&inBrowser=1", "A", 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 the foo did the bar a favour ["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], + ["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!appId=1000", "A", 1, 0, 0], - ["ftp://foo.com:8000!appId=2000&inBrowser=1", "A", 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], ]; let found = expected.map((it) => 0); diff --git a/toolkit/modules/BrowserUtils.jsm b/toolkit/modules/BrowserUtils.jsm index 412e574214ec..4f17f4b879ba 100644 --- a/toolkit/modules/BrowserUtils.jsm +++ b/toolkit/modules/BrowserUtils.jsm @@ -105,7 +105,7 @@ this.BrowserUtils = { throw new Error("principalFromOrigin does not support nsNullPrincipal"); } - var parts = aOriginString.split('!'); + var parts = aOriginString.split('^'); if (parts.length > 2) { throw new Error("bad origin string: " + aOriginString); }