OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/feature_engagement_tracker/internal/android/feature_engagem
ent_tracker_impl_android.h" | 5 #include "components/feature_engagement_tracker/internal/android/feature_engagem
ent_tracker_impl_android.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/android/callback_android.h" | 9 #include "base/android/callback_android.h" |
10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
11 #include "base/android/jni_string.h" | 11 #include "base/android/jni_string.h" |
12 #include "base/android/scoped_java_ref.h" | 12 #include "base/android/scoped_java_ref.h" |
13 #include "base/bind.h" | 13 #include "base/bind.h" |
14 #include "base/feature_list.h" | 14 #include "base/feature_list.h" |
| 15 #include "base/memory/ptr_util.h" |
15 #include "components/feature_engagement_tracker/internal/feature_list.h" | 16 #include "components/feature_engagement_tracker/internal/feature_list.h" |
16 #include "components/feature_engagement_tracker/public/feature_engagement_tracke
r.h" | 17 #include "components/feature_engagement_tracker/public/feature_engagement_tracke
r.h" |
17 #include "jni/FeatureEngagementTrackerImpl_jni.h" | 18 #include "jni/FeatureEngagementTrackerImpl_jni.h" |
18 | 19 |
19 namespace feature_engagement_tracker { | 20 namespace feature_engagement_tracker { |
20 | 21 |
21 namespace { | 22 namespace { |
22 | 23 |
23 const char kFeatureEngagementTrackerImplAndroidKey[] = | 24 const char kFeatureEngagementTrackerImplAndroidKey[] = |
24 "feature_engagement_tracker_impl_android"; | 25 "feature_engagement_tracker_impl_android"; |
(...skipping 11 matching lines...) Expand all Loading... |
36 FeatureEngagementTrackerImplAndroid* FromFeatureEngagementTrackerImpl( | 37 FeatureEngagementTrackerImplAndroid* FromFeatureEngagementTrackerImpl( |
37 FeatureEngagementTracker* feature_engagement_tracker) { | 38 FeatureEngagementTracker* feature_engagement_tracker) { |
38 FeatureEngagementTrackerImpl* impl = | 39 FeatureEngagementTrackerImpl* impl = |
39 static_cast<FeatureEngagementTrackerImpl*>(feature_engagement_tracker); | 40 static_cast<FeatureEngagementTrackerImpl*>(feature_engagement_tracker); |
40 FeatureEngagementTrackerImplAndroid* impl_android = | 41 FeatureEngagementTrackerImplAndroid* impl_android = |
41 static_cast<FeatureEngagementTrackerImplAndroid*>( | 42 static_cast<FeatureEngagementTrackerImplAndroid*>( |
42 impl->GetUserData(kFeatureEngagementTrackerImplAndroidKey)); | 43 impl->GetUserData(kFeatureEngagementTrackerImplAndroidKey)); |
43 if (!impl_android) { | 44 if (!impl_android) { |
44 impl_android = | 45 impl_android = |
45 new FeatureEngagementTrackerImplAndroid(impl, GetAllFeatures()); | 46 new FeatureEngagementTrackerImplAndroid(impl, GetAllFeatures()); |
46 impl->SetUserData(kFeatureEngagementTrackerImplAndroidKey, impl_android); | 47 impl->SetUserData(kFeatureEngagementTrackerImplAndroidKey, |
| 48 base::WrapUnique(impl_android)); |
47 } | 49 } |
48 return impl_android; | 50 return impl_android; |
49 } | 51 } |
50 | 52 |
51 } // namespace | 53 } // namespace |
52 | 54 |
53 // static | 55 // static |
54 bool FeatureEngagementTrackerImplAndroid::RegisterJni(JNIEnv* env) { | 56 bool FeatureEngagementTrackerImplAndroid::RegisterJni(JNIEnv* env) { |
55 return RegisterNativesImpl(env); | 57 return RegisterNativesImpl(env); |
56 } | 58 } |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 const base::android::JavaParamRef<jobject>& j_callback_obj) { | 137 const base::android::JavaParamRef<jobject>& j_callback_obj) { |
136 // Disambiguate RunCallbackAndroid to get the reference to the bool version. | 138 // Disambiguate RunCallbackAndroid to get the reference to the bool version. |
137 void (*runBoolCallback)(const base::android::JavaRef<jobject>&, bool) = | 139 void (*runBoolCallback)(const base::android::JavaRef<jobject>&, bool) = |
138 &base::android::RunCallbackAndroid; | 140 &base::android::RunCallbackAndroid; |
139 feature_engagement_tracker_impl_->AddOnInitializedCallback( | 141 feature_engagement_tracker_impl_->AddOnInitializedCallback( |
140 base::Bind(runBoolCallback, | 142 base::Bind(runBoolCallback, |
141 base::android::ScopedJavaGlobalRef<jobject>(j_callback_obj))); | 143 base::android::ScopedJavaGlobalRef<jobject>(j_callback_obj))); |
142 } | 144 } |
143 | 145 |
144 } // namespace feature_engagement_tracker | 146 } // namespace feature_engagement_tracker |
OLD | NEW |