123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // Copyright 2017 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 ANDROID_WEBVIEW_BROWSER_AW_FEATURE_LIST_CREATOR_H_
- #define ANDROID_WEBVIEW_BROWSER_AW_FEATURE_LIST_CREATOR_H_
- #include <memory>
- #include <utility>
- #include "android_webview/browser/aw_browser_policy_connector.h"
- #include "android_webview/browser/aw_field_trials.h"
- #include "android_webview/browser/variations/aw_variations_service_client.h"
- #include "components/policy/core/browser/browser_policy_connector_base.h"
- #include "components/variations/service/variations_field_trial_creator.h"
- class PrefService;
- namespace android_webview {
- // Used by WebView to set up field trials based on the stored variations seed
- // data.
- class AwFeatureListCreator {
- public:
- AwFeatureListCreator();
- AwFeatureListCreator(const AwFeatureListCreator&) = delete;
- AwFeatureListCreator& operator=(const AwFeatureListCreator&) = delete;
- ~AwFeatureListCreator();
- // Initializes all necessary parameters to create the feature list and setup
- // field trials.
- void CreateFeatureListAndFieldTrials();
- void CreateLocalState();
- // Passes ownership of the |local_state_| to the caller.
- std::unique_ptr<PrefService> TakePrefService() {
- DCHECK(local_state_);
- return std::move(local_state_);
- }
- // Passes ownership of the |browser_policy_connector_| to the caller.
- std::unique_ptr<AwBrowserPolicyConnector> TakeBrowserPolicyConnector() {
- DCHECK(browser_policy_connector_);
- return std::move(browser_policy_connector_);
- }
- static void DisableSignatureVerificationForTesting();
- private:
- std::unique_ptr<PrefService> CreatePrefService();
- // Sets up the field trials and related initialization.
- void SetUpFieldTrials();
- // Stores the seed. VariationsSeedStore keeps a raw pointer to this, so it
- // must persist for the process lifetime. Not persisted accross runs.
- // If TakePrefService() is called, the caller will take the ownership
- // of this variable. Stop using this variable afterwards.
- std::unique_ptr<PrefService> local_state_;
- // Performs set up for any WebView specific field trials.
- std::unique_ptr<AwFieldTrials> aw_field_trials_;
- // Responsible for creating a feature list from the seed.
- std::unique_ptr<variations::VariationsFieldTrialCreator>
- variations_field_trial_creator_;
- std::unique_ptr<AwVariationsServiceClient> client_;
- std::unique_ptr<AwBrowserPolicyConnector> browser_policy_connector_;
- };
- } // namespace android_webview
- #endif // ANDROID_WEBVIEW_BROWSER_AW_FEATURE_LIST_CREATOR_H_
|