Commit 5e41d184 authored by Shakti Sahu's avatar Shakti Sahu Committed by Commit Bot

[Video Tutorials] Configs.

- Setup video tutorial config class.
- Add default preferred language and server endpoint configs.
- Add unit test for config.

Change-Id: I9f71a85070e34e0d85b2d00d5e6dcec582240056
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2393940
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Reviewed-by: default avatarMin Qin <qinmin@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#806952}
parent 281923e5
......@@ -9,6 +9,8 @@ if (is_android) {
source_set("internal") {
sources = [
"config.cc",
"config.h",
"proto_conversions.cc",
"proto_conversions.h",
"store.h",
......@@ -80,6 +82,7 @@ source_set("unit_tests") {
testonly = true
sources = [
"config_unittest.cc",
"proto_conversions_unittest.cc",
"tutorial_group_unittest.cc",
"tutorial_store_unittest.cc",
......@@ -89,6 +92,7 @@ source_set("unit_tests") {
":internal",
"//base",
"//base/test:test_support",
"//chrome/browser/video_tutorials:public",
"//chrome/browser/video_tutorials/proto",
"//chrome/browser/video_tutorials/test:test_lib",
"//components/leveldb_proto",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/video_tutorials/internal/config.h"
#include "base/command_line.h"
#include "base/metrics/field_trial_params.h"
#include "chrome/browser/video_tutorials/switches.h"
namespace video_tutorials {
// Default base URL string for the server.
constexpr char kDefaultBaseURL[] = "https://chromeupboarding-pa.googleapis.com";
// Default URL string for GetTutorials RPC.
constexpr char kDefaultGetTutorialsPath[] = "/v1/videotutorials";
// Hindi is the default language.
constexpr char kDefaultPreferredLanguage[] = "hi";
// Finch parameter key for base server URL to retrieve the tutorials.
constexpr char kBaseURLKey[] = "base_url";
constexpr char kPrefferedLanguageKey[] = "default_lang";
namespace {
const GURL BuildGetTutorialsEndpoint(const GURL& base_url, const char* path) {
GURL::Replacements replacements;
replacements.SetPathStr(path);
return base_url.ReplaceComponents(replacements);
}
} // namespace
// static
GURL Config::GetTutorialsServerURL() {
std::string base_url_from_finch = base::GetFieldTrialParamValueByFeature(
features::kVideoTutorials, kBaseURLKey);
GURL server_url = base_url_from_finch.empty() ? GURL(kDefaultBaseURL)
: GURL(base_url_from_finch);
return BuildGetTutorialsEndpoint(server_url, kDefaultGetTutorialsPath);
}
// static
std::string Config::GetDefaultPreferredLanguage() {
std::string default_lang_from_finch = base::GetFieldTrialParamValueByFeature(
features::kVideoTutorials, kPrefferedLanguageKey);
return default_lang_from_finch.empty() ? kDefaultPreferredLanguage
: default_lang_from_finch;
}
} // namespace video_tutorials
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_VIDEO_TUTORIALS_INTERNAL_CONFIG_H_
#define CHROME_BROWSER_VIDEO_TUTORIALS_INTERNAL_CONFIG_H_
#include <memory>
#include <string>
#include "url/gurl.h"
namespace video_tutorials {
// Default URL string for GetVideoTutorials RPC.
extern const char kDefaultGetTutorialsPath[];
// Default base URL string.
extern const char kDefaultBaseURL[];
// Finch parameter key for base server URL to retrieve the tutorials.
extern const char kBaseURLKey[];
// Finch parameter key for the default preferred language.
extern const char kPrefferedLanguageKey[];
// Default preferred language setting before users pick.
extern const char kDefaultPreferredLanguage[];
class Config {
public:
// Get video tutorials metadata server URL.
static GURL GetTutorialsServerURL();
// Get the default language before users choice.
static std::string GetDefaultPreferredLanguage();
};
} // namespace video_tutorials
#endif // CHROME_BROWSER_VIDEO_TUTORIALS_INTERNAL_CONFIG_H_
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/video_tutorials/internal/config.h"
#include <map>
#include <string>
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/video_tutorials/switches.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace video_tutorials {
TEST(VideoTutorialsConfigTest, FinchConfigEnabled) {
base::test::ScopedFeatureList feature_list;
std::map<std::string, std::string> params = {
{kBaseURLKey, "https://test.com"}, {kPrefferedLanguageKey, "en"}};
feature_list.InitAndEnableFeatureWithParameters(features::kVideoTutorials,
params);
EXPECT_EQ(Config::GetTutorialsServerURL().spec(),
"https://test.com/v1/videotutorials");
EXPECT_EQ(Config::GetDefaultPreferredLanguage(), "en");
}
TEST(VideoTutorialsConfigTest, ConfigDefaultParams) {
base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(features::kVideoTutorials);
EXPECT_EQ(Config::GetTutorialsServerURL().spec(),
"https://chromeupboarding-pa.googleapis.com/v1/videotutorials");
EXPECT_EQ(Config::GetDefaultPreferredLanguage(), "hi");
}
} // namespace video_tutorials
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment