| // Copyright 2017 The Chromium Authors |
| // 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_ |