Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(675)

Side by Side Diff: chrome/browser/ui/android/tab_model/tab_model_jni_bridge.cc

Issue 2315323002: Pass JavaRef to WebContents::FromJavaWebContents. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 int TabModelJniBridge::GetActiveIndex() const { 81 int TabModelJniBridge::GetActiveIndex() const {
82 JNIEnv* env = AttachCurrentThread(); 82 JNIEnv* env = AttachCurrentThread();
83 return Java_TabModelJniBridge_index(env, java_object_.get(env)); 83 return Java_TabModelJniBridge_index(env, java_object_.get(env));
84 } 84 }
85 85
86 void TabModelJniBridge::CreateTab(TabAndroid* parent, 86 void TabModelJniBridge::CreateTab(TabAndroid* parent,
87 WebContents* web_contents, 87 WebContents* web_contents,
88 int parent_tab_id) { 88 int parent_tab_id) {
89 JNIEnv* env = AttachCurrentThread(); 89 JNIEnv* env = AttachCurrentThread();
90 Java_TabModelJniBridge_createTabWithWebContents( 90 Java_TabModelJniBridge_createTabWithWebContents(
91 env, java_object_.get(env).obj(), 91 env, java_object_.get(env), (parent ? parent->GetJavaObject() : nullptr),
92 (parent ? parent->GetJavaObject().obj() : nullptr),
93 web_contents->GetBrowserContext()->IsOffTheRecord(), 92 web_contents->GetBrowserContext()->IsOffTheRecord(),
94 web_contents->GetJavaWebContents(), parent_tab_id); 93 web_contents->GetJavaWebContents(), parent_tab_id);
95 } 94 }
96 95
97 WebContents* TabModelJniBridge::GetWebContentsAt(int index) const { 96 WebContents* TabModelJniBridge::GetWebContentsAt(int index) const {
98 TabAndroid* tab = GetTabAt(index); 97 TabAndroid* tab = GetTabAt(index);
99 return tab == NULL ? NULL : tab->web_contents(); 98 return tab == NULL ? NULL : tab->web_contents();
100 } 99 }
101 100
102 TabAndroid* TabModelJniBridge::GetTabAt(int index) const { 101 TabAndroid* TabModelJniBridge::GetTabAt(int index) const {
103 JNIEnv* env = AttachCurrentThread(); 102 JNIEnv* env = AttachCurrentThread();
104 ScopedJavaLocalRef<jobject> jtab = 103 ScopedJavaLocalRef<jobject> jtab =
105 Java_TabModelJniBridge_getTabAt(env, java_object_.get(env), index); 104 Java_TabModelJniBridge_getTabAt(env, java_object_.get(env), index);
106 105
107 return jtab.is_null() ? 106 return jtab.is_null() ? NULL : TabAndroid::GetNativeTab(env, jtab);
108 NULL : TabAndroid::GetNativeTab(env, jtab.obj());
109 } 107 }
110 108
111 void TabModelJniBridge::SetActiveIndex(int index) { 109 void TabModelJniBridge::SetActiveIndex(int index) {
112 JNIEnv* env = AttachCurrentThread(); 110 JNIEnv* env = AttachCurrentThread();
113 Java_TabModelJniBridge_setIndex(env, java_object_.get(env), index); 111 Java_TabModelJniBridge_setIndex(env, java_object_.get(env), index);
114 } 112 }
115 113
116 void TabModelJniBridge::CloseTabAt(int index) { 114 void TabModelJniBridge::CloseTabAt(int index) {
117 JNIEnv* env = AttachCurrentThread(); 115 JNIEnv* env = AttachCurrentThread();
118 Java_TabModelJniBridge_closeTabAt(env, java_object_.get(env), index); 116 Java_TabModelJniBridge_closeTabAt(env, java_object_.get(env), index);
119 } 117 }
120 118
121 WebContents* TabModelJniBridge::CreateNewTabForDevTools( 119 WebContents* TabModelJniBridge::CreateNewTabForDevTools(
122 const GURL& url) { 120 const GURL& url) {
123 // TODO(dfalcantara): Change the Java side so that it creates and returns the 121 // TODO(dfalcantara): Change the Java side so that it creates and returns the
124 // WebContents, which we can load the URL on and return. 122 // WebContents, which we can load the URL on and return.
125 JNIEnv* env = AttachCurrentThread(); 123 JNIEnv* env = AttachCurrentThread();
126 ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, url.spec()); 124 ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, url.spec());
127 ScopedJavaLocalRef<jobject> obj = 125 ScopedJavaLocalRef<jobject> obj =
128 Java_TabModelJniBridge_createNewTabForDevTools(env, java_object_.get(env), 126 Java_TabModelJniBridge_createNewTabForDevTools(env, java_object_.get(env),
129 jurl); 127 jurl);
130 if (obj.is_null()) { 128 if (obj.is_null()) {
131 VLOG(0) << "Failed to create java tab"; 129 VLOG(0) << "Failed to create java tab";
132 return NULL; 130 return NULL;
133 } 131 }
134 TabAndroid* tab = TabAndroid::GetNativeTab(env, obj.obj()); 132 TabAndroid* tab = TabAndroid::GetNativeTab(env, obj);
135 if (!tab) { 133 if (!tab) {
136 VLOG(0) << "Failed to create java tab"; 134 VLOG(0) << "Failed to create java tab";
137 return NULL; 135 return NULL;
138 } 136 }
139 return tab->web_contents(); 137 return tab->web_contents();
140 } 138 }
141 139
142 bool TabModelJniBridge::IsSessionRestoreInProgress() const { 140 bool TabModelJniBridge::IsSessionRestoreInProgress() const {
143 JNIEnv* env = AttachCurrentThread(); 141 JNIEnv* env = AttachCurrentThread();
144 return Java_TabModelJniBridge_isSessionRestoreInProgress( 142 return Java_TabModelJniBridge_isSessionRestoreInProgress(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 bool TabModelJniBridge::Register(JNIEnv* env) { 212 bool TabModelJniBridge::Register(JNIEnv* env) {
215 return RegisterNativesImpl(env); 213 return RegisterNativesImpl(env);
216 } 214 }
217 215
218 static jlong Init(JNIEnv* env, 216 static jlong Init(JNIEnv* env,
219 const JavaParamRef<jobject>& obj, 217 const JavaParamRef<jobject>& obj,
220 jboolean is_incognito) { 218 jboolean is_incognito) {
221 TabModel* tab_model = new TabModelJniBridge(env, obj, is_incognito); 219 TabModel* tab_model = new TabModelJniBridge(env, obj, is_incognito);
222 return reinterpret_cast<intptr_t>(tab_model); 220 return reinterpret_cast<intptr_t>(tab_model);
223 } 221 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698