1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string>
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/webstore_installer.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/omaha_query_params/chrome_omaha_query_params_delegate.h"
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "components/crx_file/id_util.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/omaha_query_params/omaha_query_params.h"
1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "net/base/escape.h"
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using base::StringPrintf;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochusing omaha_query_params::OmahaQueryParams;
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace extensions {
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Returns true if |target| is found in |source|.
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool Contains(const std::string& source, const std::string& target) {
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return source.find(target) != std::string::npos;
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(WebstoreInstallerTest, PlatformParams) {
2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  std::string id = crx_file::id_util::GenerateId("some random string");
2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  std::string source = "inline";
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  GURL url = WebstoreInstaller::GetWebstoreInstallURL(id,
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      WebstoreInstaller::INSTALL_SOURCE_INLINE);
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::string query = url.query();
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      Contains(query, StringPrintf("os=%s", OmahaQueryParams::GetOS())));
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      Contains(query, StringPrintf("arch=%s", OmahaQueryParams::GetArch())));
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(Contains(
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      query, StringPrintf("nacl_arch=%s", OmahaQueryParams::GetNaclArch())));
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      Contains(query,
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)               net::EscapeQueryParamValue(
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                   StringPrintf("installsource=%s", source.c_str()), true)));
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_TRUE(Contains(
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      query,
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      StringPrintf("lang=%s", ChromeOmahaQueryParamsDelegate::GetLang())));
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace extensions
47