Index: chrome/browser/extensions/updater/extension_updater_unittest.cc |
diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc |
index 1bd8576199c68d59fd031b892138ddf96dcb65b8..19b6ab9bbc7824d57256d417fef6927e5210995a 100644 |
--- a/chrome/browser/extensions/updater/extension_updater_unittest.cc |
+++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc |
@@ -45,6 +45,7 @@ |
#include "chrome/common/extensions/extension_manifest_constants.h" |
#include "chrome/common/extensions/manifest_handler.h" |
#include "chrome/common/extensions/manifest_url_handler.h" |
+#include "chrome/common/omaha_query_params.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/testing_profile.h" |
#include "content/public/browser/notification_details.h" |
@@ -443,6 +444,32 @@ static void ExtractParameters(const std::string& params, |
} |
} |
+static void VerifyQueryAndExtractParameters( |
+ const std::string& query, |
+ std::map<std::string, std::string>* result) { |
+ std::map<std::string, std::string> params; |
+ ExtractParameters(query, ¶ms); |
+ |
+#if defined(GOOGLE_CHROME_BUILD) |
+ std::string prod = "chromecrx"; |
+#else |
+ std::string prod = "chromiumcrx"; |
+#endif |
+ std::string omaha_params = chrome::GetOmahaQueryParams(prod); |
+ std::map<std::string, std::string> expected; |
+ ExtractParameters(omaha_params, &expected); |
+ |
+ for (std::map<std::string, std::string>::iterator it = expected.begin(); |
+ it != expected.end(); ++it) { |
+ EXPECT_EQ(it->second, params[it->first]); |
+ } |
+ |
+ EXPECT_NE(params.find("x"), params.end()); |
+ std::string decoded = net::UnescapeURLComponent( |
+ params["x"], net::UnescapeRule::URL_SPECIAL_CHARS); |
+ ExtractParameters(decoded, result); |
+} |
+ |
// All of our tests that need to use private APIs of ExtensionUpdater live |
// inside this class (which is a friend to ExtensionUpdater). |
class ExtensionUpdaterTest : public testing::Test { |
@@ -554,16 +581,10 @@ class ExtensionUpdaterTest : public testing::Test { |
EXPECT_EQ("/bar", url.path()); |
// Validate the extension request parameters in the query. It should |
- // look something like "?x=id%3D<id>%26v%3D<version>%26uc". |
+ // look something like "x=id%3D<id>%26v%3D<version>%26uc". |
EXPECT_TRUE(url.has_query()); |
- std::vector<std::string> parts; |
- base::SplitString(url.query(), '=', &parts); |
- EXPECT_EQ(2u, parts.size()); |
- EXPECT_EQ("x", parts[0]); |
- std::string decoded = net::UnescapeURLComponent( |
- parts[1], net::UnescapeRule::URL_SPECIAL_CHARS); |
std::map<std::string, std::string> params; |
- ExtractParameters(decoded, ¶ms); |
+ VerifyQueryAndExtractParameters(url.query(), ¶ms); |
if (pending) { |
EXPECT_TRUE(pending_extension_manager->IsIdPending(params["id"])); |
EXPECT_EQ("0.0.0.0", params["v"]); |
@@ -603,16 +624,10 @@ class ExtensionUpdaterTest : public testing::Test { |
EXPECT_EQ("/service/update2/crx", url.path()); |
// Validate the extension request parameters in the query. It should |
- // look something like "?x=id%3D<id>%26v%3D<version>%26uc". |
+ // look something like "x=id%3D<id>%26v%3D<version>%26uc". |
EXPECT_TRUE(url.has_query()); |
- std::vector<std::string> parts; |
- base::SplitString(url.query(), '=', &parts); |
- EXPECT_EQ(2u, parts.size()); |
- EXPECT_EQ("x", parts[0]); |
- std::string decoded = net::UnescapeURLComponent( |
- parts[1], net::UnescapeRule::URL_SPECIAL_CHARS); |
std::map<std::string, std::string> params; |
- ExtractParameters(decoded, ¶ms); |
+ VerifyQueryAndExtractParameters(url.query(), ¶ms); |
EXPECT_EQ("com.google.crx.blacklist", params["id"]); |
EXPECT_EQ("0", params["v"]); |
EXPECT_EQ("", params["uc"]); |
@@ -627,9 +642,12 @@ class ExtensionUpdaterTest : public testing::Test { |
// option to appear in the x= parameter. |
ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
fetch_data.AddExtension(id, version, &kNeverPingedData, "", ""); |
- EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
- "%26v%3D1.0%26uc", |
- fetch_data.full_url().spec()); |
+ |
+ std::map<std::string, std::string> params; |
+ VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
+ EXPECT_EQ(id, params["id"]); |
+ EXPECT_EQ(version, params["v"]); |
+ EXPECT_EQ(params.end(), params.find("ap")); |
asargent_no_longer_on_chrome
2013/03/06 00:45:06
nice cleanup - this is much more readable!
|
} |
void TestUpdateUrlDataSimple() { |
@@ -640,9 +658,11 @@ class ExtensionUpdaterTest : public testing::Test { |
// option to appear in the x= parameter. |
ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
fetch_data.AddExtension(id, version, &kNeverPingedData, "bar", ""); |
- EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
- "%26v%3D1.0%26uc%26ap%3Dbar", |
- fetch_data.full_url().spec()); |
+ std::map<std::string, std::string> params; |
+ VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
+ EXPECT_EQ(id, params["id"]); |
+ EXPECT_EQ(version, params["v"]); |
+ EXPECT_EQ("bar", params["ap"]); |
} |
void TestUpdateUrlDataCompound() { |
@@ -653,9 +673,11 @@ class ExtensionUpdaterTest : public testing::Test { |
// option to appear in the x= parameter. |
ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
fetch_data.AddExtension(id, version, &kNeverPingedData, "a=1&b=2&c", ""); |
- EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
- "%26v%3D1.0%26uc%26ap%3Da%253D1%2526b%253D2%2526c", |
- fetch_data.full_url().spec()); |
+ std::map<std::string, std::string> params; |
+ VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
+ EXPECT_EQ(id, params["id"]); |
+ EXPECT_EQ(version, params["v"]); |
+ EXPECT_EQ("a%3D1%26b%3D2%26c", params["ap"]); |
} |
void TestUpdateUrlDataFromGallery(const std::string& gallery_url) { |
@@ -695,9 +717,11 @@ class ExtensionUpdaterTest : public testing::Test { |
ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
fetch_data.AddExtension(id, version, &kNeverPingedData, |
kEmptyUpdateUrlData, install_source); |
- EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
- "%26v%3D1.0%26installsource%3Dinstally%26uc", |
- fetch_data.full_url().spec()); |
+ std::map<std::string, std::string> params; |
+ VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
+ EXPECT_EQ(id, params["id"]); |
+ EXPECT_EQ(version, params["v"]); |
+ EXPECT_EQ(install_source, params["installsource"]); |
} |
void TestDetermineUpdates() { |