| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/ui/android/tab_model/tab_model_jni_bridge.h" | 5 #include "chrome/browser/ui/android/tab_model/tab_model_jni_bridge.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "base/android/jni_weak_ref.h" | 9 #include "base/android/jni_weak_ref.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 } // namespace | 40 } // namespace |
| 41 | 41 |
| 42 TabModelJniBridge::TabModelJniBridge(JNIEnv* env, | 42 TabModelJniBridge::TabModelJniBridge(JNIEnv* env, |
| 43 jobject jobj, | 43 jobject jobj, |
| 44 bool is_incognito) | 44 bool is_incognito) |
| 45 : TabModel(FindProfile(is_incognito)), | 45 : TabModel(FindProfile(is_incognito)), |
| 46 java_object_(env, env->NewWeakGlobalRef(jobj)) { | 46 java_object_(env, env->NewWeakGlobalRef(jobj)) { |
| 47 TabModelList::AddTabModel(this); | 47 TabModelList::AddTabModel(this); |
| 48 } | 48 } |
| 49 | 49 |
| 50 void TabModelJniBridge::Destroy(JNIEnv* env, jobject obj) { | 50 void TabModelJniBridge::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 51 delete this; | 51 delete this; |
| 52 } | 52 } |
| 53 | 53 |
| 54 ScopedJavaLocalRef<jobject> TabModelJniBridge::GetProfileAndroid(JNIEnv* env, | 54 ScopedJavaLocalRef<jobject> TabModelJniBridge::GetProfileAndroid( |
| 55 jobject obj) { | 55 JNIEnv* env, |
| 56 const JavaParamRef<jobject>& obj) { |
| 56 ProfileAndroid* profile_android = ProfileAndroid::FromProfile(GetProfile()); | 57 ProfileAndroid* profile_android = ProfileAndroid::FromProfile(GetProfile()); |
| 57 if (!profile_android) | 58 if (!profile_android) |
| 58 return ScopedJavaLocalRef<jobject>(); | 59 return ScopedJavaLocalRef<jobject>(); |
| 59 return profile_android->GetJavaObject(); | 60 return profile_android->GetJavaObject(); |
| 60 } | 61 } |
| 61 | 62 |
| 62 void TabModelJniBridge::TabAddedToModel(JNIEnv* env, | 63 void TabModelJniBridge::TabAddedToModel(JNIEnv* env, |
| 63 jobject obj, | 64 const JavaParamRef<jobject>& obj, |
| 64 jobject jtab) { | 65 const JavaParamRef<jobject>& jtab) { |
| 65 // Tab#initialize() should have been called by now otherwise we can't push | 66 // Tab#initialize() should have been called by now otherwise we can't push |
| 66 // the window id. | 67 // the window id. |
| 67 TabAndroid* tab = TabAndroid::GetNativeTab(env, jtab); | 68 TabAndroid* tab = TabAndroid::GetNativeTab(env, jtab); |
| 68 if (tab) tab->SetWindowSessionID(GetSessionId()); | 69 if (tab) tab->SetWindowSessionID(GetSessionId()); |
| 69 } | 70 } |
| 70 | 71 |
| 71 int TabModelJniBridge::GetTabCount() const { | 72 int TabModelJniBridge::GetTabCount() const { |
| 72 JNIEnv* env = AttachCurrentThread(); | 73 JNIEnv* env = AttachCurrentThread(); |
| 73 return Java_TabModelJniBridge_getCount(env, java_object_.get(env).obj()); | 74 return Java_TabModelJniBridge_getCount(env, java_object_.get(env).obj()); |
| 74 } | 75 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 } | 139 } |
| 139 return tab->web_contents(); | 140 return tab->web_contents(); |
| 140 } | 141 } |
| 141 | 142 |
| 142 bool TabModelJniBridge::IsSessionRestoreInProgress() const { | 143 bool TabModelJniBridge::IsSessionRestoreInProgress() const { |
| 143 JNIEnv* env = AttachCurrentThread(); | 144 JNIEnv* env = AttachCurrentThread(); |
| 144 return Java_TabModelJniBridge_isSessionRestoreInProgress( | 145 return Java_TabModelJniBridge_isSessionRestoreInProgress( |
| 145 env, java_object_.get(env).obj()); | 146 env, java_object_.get(env).obj()); |
| 146 } | 147 } |
| 147 | 148 |
| 148 void TabModelJniBridge::BroadcastSessionRestoreComplete(JNIEnv* env, | 149 void TabModelJniBridge::BroadcastSessionRestoreComplete( |
| 149 jobject obj) { | 150 JNIEnv* env, |
| 151 const JavaParamRef<jobject>& obj) { |
| 150 TabModel::BroadcastSessionRestoreComplete(); | 152 TabModel::BroadcastSessionRestoreComplete(); |
| 151 } | 153 } |
| 152 | 154 |
| 153 inline static base::TimeDelta GetTimeDelta(jlong ms) { | 155 inline static base::TimeDelta GetTimeDelta(jlong ms) { |
| 154 return base::TimeDelta::FromMilliseconds(static_cast<int64>(ms)); | 156 return base::TimeDelta::FromMilliseconds(static_cast<int64>(ms)); |
| 155 } | 157 } |
| 156 | 158 |
| 157 void LogFromCloseMetric(JNIEnv* env, | 159 void LogFromCloseMetric(JNIEnv* env, |
| 158 const JavaParamRef<jclass>& jcaller, | 160 const JavaParamRef<jclass>& jcaller, |
| 159 jlong ms, | 161 jlong ms, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 bool TabModelJniBridge::Register(JNIEnv* env) { | 215 bool TabModelJniBridge::Register(JNIEnv* env) { |
| 214 return RegisterNativesImpl(env); | 216 return RegisterNativesImpl(env); |
| 215 } | 217 } |
| 216 | 218 |
| 217 static jlong Init(JNIEnv* env, | 219 static jlong Init(JNIEnv* env, |
| 218 const JavaParamRef<jobject>& obj, | 220 const JavaParamRef<jobject>& obj, |
| 219 jboolean is_incognito) { | 221 jboolean is_incognito) { |
| 220 TabModel* tab_model = new TabModelJniBridge(env, obj, is_incognito); | 222 TabModel* tab_model = new TabModelJniBridge(env, obj, is_incognito); |
| 221 return reinterpret_cast<intptr_t>(tab_model); | 223 return reinterpret_cast<intptr_t>(tab_model); |
| 222 } | 224 } |
| OLD | NEW |