1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "third_party/blink/renderer/platform/bindings/origin_trial_features.h"
6 
7 #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h"
8 #include "third_party/blink/renderer/platform/bindings/script_state.h"
9 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
10 
11 namespace blink {
12 
InstallOriginTrialFeaturesDefault(const WrapperTypeInfo * wrapper_type_info,const ScriptState * script_state,v8::Local<v8::Object> prototype_object,v8::Local<v8::Function> interface_object)13 void InstallOriginTrialFeaturesDefault(
14     const WrapperTypeInfo* wrapper_type_info,
15     const ScriptState* script_state,
16     v8::Local<v8::Object> prototype_object,
17     v8::Local<v8::Function> interface_object) {}
18 
InstallPendingOriginTrialFeatureDefault(OriginTrialFeature feature,const ScriptState * script_state)19 void InstallPendingOriginTrialFeatureDefault(OriginTrialFeature feature,
20                                              const ScriptState* script_state) {}
21 
22 namespace {
23 InstallOriginTrialFeaturesFunction g_install_origin_trial_features_function =
24     &InstallOriginTrialFeaturesDefault;
25 
26 InstallPendingOriginTrialFeatureFunction
27     g_install_pending_origin_trial_feature_function =
28         &InstallPendingOriginTrialFeatureDefault;
29 }  // namespace
30 
SetInstallOriginTrialFeaturesFunction(InstallOriginTrialFeaturesFunction new_install_origin_trial_features_function)31 InstallOriginTrialFeaturesFunction SetInstallOriginTrialFeaturesFunction(
32     InstallOriginTrialFeaturesFunction
33         new_install_origin_trial_features_function) {
34   InstallOriginTrialFeaturesFunction original_function =
35       g_install_origin_trial_features_function;
36   g_install_origin_trial_features_function =
37       new_install_origin_trial_features_function;
38   return original_function;
39 }
40 
41 InstallPendingOriginTrialFeatureFunction
SetInstallPendingOriginTrialFeatureFunction(InstallPendingOriginTrialFeatureFunction new_install_pending_origin_trial_feature_function)42 SetInstallPendingOriginTrialFeatureFunction(
43     InstallPendingOriginTrialFeatureFunction
44         new_install_pending_origin_trial_feature_function) {
45   InstallPendingOriginTrialFeatureFunction original_function =
46       g_install_pending_origin_trial_feature_function;
47   g_install_pending_origin_trial_feature_function =
48       new_install_pending_origin_trial_feature_function;
49   return original_function;
50 }
51 
InstallOriginTrialFeatures(const WrapperTypeInfo * type,const ScriptState * script_state,v8::Local<v8::Object> prototype_object,v8::Local<v8::Function> interface_object)52 void InstallOriginTrialFeatures(const WrapperTypeInfo* type,
53                                 const ScriptState* script_state,
54                                 v8::Local<v8::Object> prototype_object,
55                                 v8::Local<v8::Function> interface_object) {
56   (*g_install_origin_trial_features_function)(
57       type, script_state, prototype_object, interface_object);
58 }
59 
InstallPendingOriginTrialFeature(OriginTrialFeature feature,const ScriptState * script_state)60 void InstallPendingOriginTrialFeature(OriginTrialFeature feature,
61                                       const ScriptState* script_state) {
62   DCHECK(script_state);
63   DCHECK(script_state->GetContext() ==
64          script_state->GetIsolate()->GetCurrentContext());
65   DCHECK(script_state->PerContextData());
66   DCHECK(script_state->World().IsMainWorld());
67 
68   (*g_install_pending_origin_trial_feature_function)(feature, script_state);
69 }
70 
71 }  // namespace blink
72