OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/android/tab_android.h" | 5 #include "chrome/browser/android/tab_android.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 } | 71 } |
72 | 72 |
73 TabAndroid::TabAndroid(JNIEnv* env, jobject obj) | 73 TabAndroid::TabAndroid(JNIEnv* env, jobject obj) |
74 : weak_java_tab_(env, obj), | 74 : weak_java_tab_(env, obj), |
75 synced_tab_delegate_(new browser_sync::SyncedTabDelegateAndroid(this)) { | 75 synced_tab_delegate_(new browser_sync::SyncedTabDelegateAndroid(this)) { |
76 Java_Tab_setNativePtr(env, obj, reinterpret_cast<intptr_t>(this)); | 76 Java_Tab_setNativePtr(env, obj, reinterpret_cast<intptr_t>(this)); |
77 } | 77 } |
78 | 78 |
79 TabAndroid::~TabAndroid() { | 79 TabAndroid::~TabAndroid() { |
80 JNIEnv* env = base::android::AttachCurrentThread(); | 80 JNIEnv* env = base::android::AttachCurrentThread(); |
81 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | 81 Java_Tab_clearNativePtr(env, weak_java_tab_.get(env).obj()); |
82 if (obj.is_null()) | |
83 return; | |
84 | |
85 Java_Tab_clearNativePtr(env, obj.obj()); | |
86 } | 82 } |
87 | 83 |
88 base::android::ScopedJavaLocalRef<jobject> TabAndroid::GetJavaObject() { | 84 base::android::ScopedJavaLocalRef<jobject> TabAndroid::GetJavaObject() { |
89 JNIEnv* env = base::android::AttachCurrentThread(); | 85 JNIEnv* env = base::android::AttachCurrentThread(); |
90 return weak_java_tab_.get(env); | 86 return weak_java_tab_.get(env); |
91 } | 87 } |
92 | 88 |
93 int TabAndroid::GetAndroidId() const { | 89 int TabAndroid::GetAndroidId() const { |
94 JNIEnv* env = base::android::AttachCurrentThread(); | 90 JNIEnv* env = base::android::AttachCurrentThread(); |
95 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | 91 return Java_Tab_getId(env, weak_java_tab_.get(env).obj()); |
96 if (obj.is_null()) | |
97 return -1; | |
98 return Java_Tab_getId(env, obj.obj()); | |
99 } | 92 } |
100 | 93 |
101 int TabAndroid::GetSyncId() const { | 94 int TabAndroid::GetSyncId() const { |
102 JNIEnv* env = base::android::AttachCurrentThread(); | 95 JNIEnv* env = base::android::AttachCurrentThread(); |
103 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | 96 return Java_Tab_getSyncId(env, weak_java_tab_.get(env).obj()); |
104 if (obj.is_null()) | |
105 return 0; | |
106 return Java_Tab_getSyncId(env, obj.obj()); | |
107 } | 97 } |
108 | 98 |
109 base::string16 TabAndroid::GetTitle() const { | 99 base::string16 TabAndroid::GetTitle() const { |
110 JNIEnv* env = base::android::AttachCurrentThread(); | 100 JNIEnv* env = base::android::AttachCurrentThread(); |
111 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | |
112 if (obj.is_null()) | |
113 return base::string16(); | |
114 return base::android::ConvertJavaStringToUTF16( | 101 return base::android::ConvertJavaStringToUTF16( |
115 Java_Tab_getTitle(env, obj.obj())); | 102 Java_Tab_getTitle(env, weak_java_tab_.get(env).obj())); |
116 } | 103 } |
117 | 104 |
118 GURL TabAndroid::GetURL() const { | 105 GURL TabAndroid::GetURL() const { |
119 JNIEnv* env = base::android::AttachCurrentThread(); | 106 JNIEnv* env = base::android::AttachCurrentThread(); |
120 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | |
121 if (obj.is_null()) | |
122 return GURL::EmptyGURL(); | |
123 return GURL(base::android::ConvertJavaStringToUTF8( | 107 return GURL(base::android::ConvertJavaStringToUTF8( |
124 Java_Tab_getUrl(env, obj.obj()))); | 108 Java_Tab_getUrl(env, weak_java_tab_.get(env).obj()))); |
125 } | 109 } |
126 | 110 |
127 bool TabAndroid::LoadIfNeeded() { | 111 bool TabAndroid::LoadIfNeeded() { |
128 JNIEnv* env = base::android::AttachCurrentThread(); | 112 JNIEnv* env = base::android::AttachCurrentThread(); |
129 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | 113 return Java_Tab_loadIfNeeded(env, weak_java_tab_.get(env).obj()); |
130 if (obj.is_null()) | |
131 return false; | |
132 return Java_Tab_loadIfNeeded(env, obj.obj()); | |
133 } | 114 } |
134 | 115 |
135 content::ContentViewCore* TabAndroid::GetContentViewCore() const { | 116 content::ContentViewCore* TabAndroid::GetContentViewCore() const { |
136 if (!web_contents()) | 117 if (!web_contents()) |
137 return NULL; | 118 return NULL; |
138 | 119 |
139 return content::ContentViewCore::FromWebContents(web_contents()); | 120 return content::ContentViewCore::FromWebContents(web_contents()); |
140 } | 121 } |
141 | 122 |
142 Profile* TabAndroid::GetProfile() const { | 123 Profile* TabAndroid::GetProfile() const { |
(...skipping 13 matching lines...) Expand all Loading... |
156 if (!web_contents()) | 137 if (!web_contents()) |
157 return; | 138 return; |
158 | 139 |
159 SessionTabHelper* session_tab_helper = | 140 SessionTabHelper* session_tab_helper = |
160 SessionTabHelper::FromWebContents(web_contents()); | 141 SessionTabHelper::FromWebContents(web_contents()); |
161 session_tab_helper->SetWindowID(session_window_id_); | 142 session_tab_helper->SetWindowID(session_window_id_); |
162 } | 143 } |
163 | 144 |
164 void TabAndroid::SetSyncId(int sync_id) { | 145 void TabAndroid::SetSyncId(int sync_id) { |
165 JNIEnv* env = base::android::AttachCurrentThread(); | 146 JNIEnv* env = base::android::AttachCurrentThread(); |
166 ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); | 147 Java_Tab_setSyncId(env, weak_java_tab_.get(env).obj(), sync_id); |
167 if (obj.is_null()) | |
168 return; | |
169 Java_Tab_setSyncId(env, obj.obj(), sync_id); | |
170 } | 148 } |
171 | 149 |
172 void TabAndroid::HandlePopupNavigation(chrome::NavigateParams* params) { | 150 void TabAndroid::HandlePopupNavigation(chrome::NavigateParams* params) { |
173 NOTIMPLEMENTED(); | 151 NOTIMPLEMENTED(); |
174 } | 152 } |
175 | 153 |
176 bool TabAndroid::ShouldWelcomePageLinkToTermsOfService() { | 154 bool TabAndroid::ShouldWelcomePageLinkToTermsOfService() { |
177 NOTIMPLEMENTED(); | 155 NOTIMPLEMENTED(); |
178 return false; | 156 return false; |
179 } | 157 } |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 | 498 |
521 static void Init(JNIEnv* env, jobject obj) { | 499 static void Init(JNIEnv* env, jobject obj) { |
522 TRACE_EVENT0("native", "TabAndroid::Init"); | 500 TRACE_EVENT0("native", "TabAndroid::Init"); |
523 // This will automatically bind to the Java object and pass ownership there. | 501 // This will automatically bind to the Java object and pass ownership there. |
524 new TabAndroid(env, obj); | 502 new TabAndroid(env, obj); |
525 } | 503 } |
526 | 504 |
527 bool TabAndroid::RegisterTabAndroid(JNIEnv* env) { | 505 bool TabAndroid::RegisterTabAndroid(JNIEnv* env) { |
528 return RegisterNativesImpl(env); | 506 return RegisterNativesImpl(env); |
529 } | 507 } |
OLD | NEW |