146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)//
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// This namespace provides various helpers and state relating to Google Chrome
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// distributions (such as RLZ), and specifically relating to the brand of the
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// current install. Brands are codes that are assigned to partners for tracking
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// distribution information.
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#ifndef CHROME_BROWSER_GOOGLE_GOOGLE_BRAND_H__
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define CHROME_BROWSER_GOOGLE_GOOGLE_BRAND_H__
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include <string>
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/basictypes.h"
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class GURL;
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace google_brand {
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Returns in |brand| the brand code or distribution tag that has been
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// assigned to a partner. Returns false if the information is not available.
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool GetBrand(std::string* brand);
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Returns in |brand| the reactivation brand code or distribution tag
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// that has been assigned to a partner for reactivating a dormant chrome
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// install. Returns false if the information is not available.
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool GetReactivationBrand(std::string* brand);
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// True if a build is strictly organic, according to its brand code.
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool IsOrganic(const std::string& brand);
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// True if a build should run as organic during first run. This uses
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// a slightly different set of brand codes from the standard IsOrganic
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// method.
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool IsOrganicFirstRun(const std::string& brand);
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// True if |brand| is an internet cafe brand code.
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool IsInternetCafeBrandCode(const std::string& brand);
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// This class is meant to be used only from test code, and sets the brand
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// code returned by the function GetBrand() above while the object exists.
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class BrandForTesting {
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  explicit BrandForTesting(const std::string& brand);
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ~BrandForTesting();
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private:
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::string brand_;
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BrandForTesting);
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace google_brand
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif  // CHROME_BROWSER_GOOGLE_GOOGLE_BRAND_H__
56