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

Side by Side Diff: content/browser/web_contents/web_contents_android.cc

Issue 2237943002: Remove now-unnecessary .obj() in Java method calls. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@switch-context
Patch Set: Rebase *again* :( Created 4 years, 4 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
« no previous file with comments | « content/browser/time_zone_monitor_android.cc ('k') | content/common/android/hash_set.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/web_contents/web_contents_android.h" 5 #include "content/browser/web_contents/web_contents_android.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_array.h" 10 #include "base/android/jni_array.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 // destroyed WebContents object. 58 // destroyed WebContents object.
59 base::LazyInstance<base::hash_set<WebContentsAndroid*> >::Leaky 59 base::LazyInstance<base::hash_set<WebContentsAndroid*> >::Leaky
60 g_allocated_web_contents_androids = LAZY_INSTANCE_INITIALIZER; 60 g_allocated_web_contents_androids = LAZY_INSTANCE_INITIALIZER;
61 61
62 void JavaScriptResultCallback(const ScopedJavaGlobalRef<jobject>& callback, 62 void JavaScriptResultCallback(const ScopedJavaGlobalRef<jobject>& callback,
63 const base::Value* result) { 63 const base::Value* result) {
64 JNIEnv* env = base::android::AttachCurrentThread(); 64 JNIEnv* env = base::android::AttachCurrentThread();
65 std::string json; 65 std::string json;
66 base::JSONWriter::Write(*result, &json); 66 base::JSONWriter::Write(*result, &json);
67 ScopedJavaLocalRef<jstring> j_json = ConvertUTF8ToJavaString(env, json); 67 ScopedJavaLocalRef<jstring> j_json = ConvertUTF8ToJavaString(env, json);
68 Java_WebContentsImpl_onEvaluateJavaScriptResult( 68 Java_WebContentsImpl_onEvaluateJavaScriptResult(env, j_json, callback);
69 env, j_json.obj(), callback.obj());
70 } 69 }
71 70
72 struct AccessibilitySnapshotParams { 71 struct AccessibilitySnapshotParams {
73 AccessibilitySnapshotParams() 72 AccessibilitySnapshotParams()
74 : has_tree_data(false), should_select_leaf_nodes(false) {} 73 : has_tree_data(false), should_select_leaf_nodes(false) {}
75 74
76 bool has_tree_data; 75 bool has_tree_data;
77 // The current text selection within this tree, if any, expressed as the 76 // The current text selection within this tree, if any, expressed as the
78 // node ID and character offset of the anchor (selection start) and focus 77 // node ID and character offset of the anchor (selection start) and focus
79 // (selection end). 78 // (selection end).
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 110
112 const gfx::Rect& absolute_rect = node->GetPageBoundsRect(); 111 const gfx::Rect& absolute_rect = node->GetPageBoundsRect();
113 gfx::Rect parent_relative_rect = absolute_rect; 112 gfx::Rect parent_relative_rect = absolute_rect;
114 bool is_root = node->GetParent() == nullptr; 113 bool is_root = node->GetParent() == nullptr;
115 if (!is_root) { 114 if (!is_root) {
116 parent_relative_rect.Offset(-parent_rect.OffsetFromOrigin()); 115 parent_relative_rect.Offset(-parent_rect.OffsetFromOrigin());
117 } 116 }
118 ScopedJavaLocalRef<jobject> j_node = 117 ScopedJavaLocalRef<jobject> j_node =
119 Java_WebContentsImpl_createAccessibilitySnapshotNode( 118 Java_WebContentsImpl_createAccessibilitySnapshotNode(
120 env, parent_relative_rect.x(), parent_relative_rect.y(), 119 env, parent_relative_rect.x(), parent_relative_rect.y(),
121 absolute_rect.width(), absolute_rect.height(), is_root, j_text.obj(), 120 absolute_rect.width(), absolute_rect.height(), is_root, j_text, color,
122 color, bgcolor, size, text_style, j_class.obj()); 121 bgcolor, size, text_style, j_class);
123 122
124 if (params->has_tree_data && node->PlatformIsLeaf()) { 123 if (params->has_tree_data && node->PlatformIsLeaf()) {
125 int start_selection = 0; 124 int start_selection = 0;
126 int end_selection = 0; 125 int end_selection = 0;
127 if (params->sel_anchor_object_id == node->GetId()) { 126 if (params->sel_anchor_object_id == node->GetId()) {
128 start_selection = params->sel_anchor_offset; 127 start_selection = params->sel_anchor_offset;
129 params->should_select_leaf_nodes = true; 128 params->should_select_leaf_nodes = true;
130 } 129 }
131 if (params->should_select_leaf_nodes) 130 if (params->should_select_leaf_nodes)
132 end_selection = node->GetText().length(); 131 end_selection = node->GetText().length();
133 132
134 if (params->sel_focus_object_id == node->GetId()) { 133 if (params->sel_focus_object_id == node->GetId()) {
135 end_selection = params->sel_focus_offset; 134 end_selection = params->sel_focus_offset;
136 params->should_select_leaf_nodes = false; 135 params->should_select_leaf_nodes = false;
137 } 136 }
138 if (end_selection > 0) 137 if (end_selection > 0)
139 Java_WebContentsImpl_setAccessibilitySnapshotSelection( 138 Java_WebContentsImpl_setAccessibilitySnapshotSelection(
140 env, j_node.obj(), start_selection, end_selection); 139 env, j_node, start_selection, end_selection);
141 } 140 }
142 141
143 for (uint32_t i = 0; i < node->PlatformChildCount(); i++) { 142 for (uint32_t i = 0; i < node->PlatformChildCount(); i++) {
144 BrowserAccessibilityAndroid* child = 143 BrowserAccessibilityAndroid* child =
145 static_cast<BrowserAccessibilityAndroid*>( 144 static_cast<BrowserAccessibilityAndroid*>(
146 node->PlatformGetChild(i)); 145 node->PlatformGetChild(i));
147 Java_WebContentsImpl_addAccessibilityNodeAsChild( 146 Java_WebContentsImpl_addAccessibilityNodeAsChild(
148 env, j_node.obj(), 147 env, j_node, WalkAXTreeDepthFirst(env, child, absolute_rect, params));
149 WalkAXTreeDepthFirst(env, child, absolute_rect, params).obj());
150 } 148 }
151 return j_node; 149 return j_node;
152 } 150 }
153 151
154 // Walks over the AXTreeUpdate and creates a light weight snapshot. 152 // Walks over the AXTreeUpdate and creates a light weight snapshot.
155 void AXTreeSnapshotCallback(const ScopedJavaGlobalRef<jobject>& callback, 153 void AXTreeSnapshotCallback(const ScopedJavaGlobalRef<jobject>& callback,
156 const ui::AXTreeUpdate& result) { 154 const ui::AXTreeUpdate& result) {
157 JNIEnv* env = base::android::AttachCurrentThread(); 155 JNIEnv* env = base::android::AttachCurrentThread();
158 if (result.nodes.empty()) { 156 if (result.nodes.empty()) {
159 Java_WebContentsImpl_onAccessibilitySnapshot(env, nullptr, callback.obj()); 157 Java_WebContentsImpl_onAccessibilitySnapshot(env, nullptr, callback);
160 return; 158 return;
161 } 159 }
162 std::unique_ptr<BrowserAccessibilityManagerAndroid> manager( 160 std::unique_ptr<BrowserAccessibilityManagerAndroid> manager(
163 static_cast<BrowserAccessibilityManagerAndroid*>( 161 static_cast<BrowserAccessibilityManagerAndroid*>(
164 BrowserAccessibilityManager::Create(result, nullptr))); 162 BrowserAccessibilityManager::Create(result, nullptr)));
165 manager->set_prune_tree_for_screen_reader(false); 163 manager->set_prune_tree_for_screen_reader(false);
166 BrowserAccessibilityAndroid* root = 164 BrowserAccessibilityAndroid* root =
167 static_cast<BrowserAccessibilityAndroid*>(manager->GetRoot()); 165 static_cast<BrowserAccessibilityAndroid*>(manager->GetRoot());
168 AccessibilitySnapshotParams params; 166 AccessibilitySnapshotParams params;
169 if (result.has_tree_data) { 167 if (result.has_tree_data) {
170 params.has_tree_data = true; 168 params.has_tree_data = true;
171 params.sel_anchor_object_id = result.tree_data.sel_anchor_object_id; 169 params.sel_anchor_object_id = result.tree_data.sel_anchor_object_id;
172 params.sel_anchor_offset = result.tree_data.sel_anchor_offset; 170 params.sel_anchor_offset = result.tree_data.sel_anchor_offset;
173 params.sel_focus_object_id = result.tree_data.sel_focus_object_id; 171 params.sel_focus_object_id = result.tree_data.sel_focus_object_id;
174 params.sel_focus_offset = result.tree_data.sel_focus_offset; 172 params.sel_focus_offset = result.tree_data.sel_focus_offset;
175 } 173 }
176 gfx::Rect parent_rect; 174 gfx::Rect parent_rect;
177 ScopedJavaLocalRef<jobject> j_root = 175 ScopedJavaLocalRef<jobject> j_root =
178 WalkAXTreeDepthFirst(env, root, parent_rect, &params); 176 WalkAXTreeDepthFirst(env, root, parent_rect, &params);
179 Java_WebContentsImpl_onAccessibilitySnapshot( 177 Java_WebContentsImpl_onAccessibilitySnapshot(env, j_root, callback);
180 env, j_root.obj(), callback.obj());
181 } 178 }
182 179
183 } // namespace 180 } // namespace
184 181
185 // static 182 // static
186 WebContents* WebContents::FromJavaWebContents( 183 WebContents* WebContents::FromJavaWebContents(
187 jobject jweb_contents_android) { 184 jobject jweb_contents_android) {
188 DCHECK_CURRENTLY_ON(BrowserThread::UI); 185 DCHECK_CURRENTLY_ON(BrowserThread::UI);
189 if (!jweb_contents_android) 186 if (!jweb_contents_android)
190 return NULL; 187 return NULL;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 } 236 }
240 237
241 WebContentsAndroid::WebContentsAndroid(WebContentsImpl* web_contents) 238 WebContentsAndroid::WebContentsAndroid(WebContentsImpl* web_contents)
242 : web_contents_(web_contents), 239 : web_contents_(web_contents),
243 navigation_controller_(&(web_contents->GetController())), 240 navigation_controller_(&(web_contents->GetController())),
244 synchronous_compositor_client_(nullptr), 241 synchronous_compositor_client_(nullptr),
245 weak_factory_(this) { 242 weak_factory_(this) {
246 g_allocated_web_contents_androids.Get().insert(this); 243 g_allocated_web_contents_androids.Get().insert(this);
247 JNIEnv* env = AttachCurrentThread(); 244 JNIEnv* env = AttachCurrentThread();
248 obj_.Reset(env, 245 obj_.Reset(env,
249 Java_WebContentsImpl_create( 246 Java_WebContentsImpl_create(env, reinterpret_cast<intptr_t>(this),
250 env, 247 navigation_controller_.GetJavaObject())
251 reinterpret_cast<intptr_t>(this), 248 .obj());
252 navigation_controller_.GetJavaObject().obj()).obj());
253 RendererPreferences* prefs = web_contents_->GetMutableRendererPrefs(); 249 RendererPreferences* prefs = web_contents_->GetMutableRendererPrefs();
254 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 250 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
255 prefs->network_contry_iso = 251 prefs->network_contry_iso =
256 command_line->HasSwitch(switches::kNetworkCountryIso) ? 252 command_line->HasSwitch(switches::kNetworkCountryIso) ?
257 command_line->GetSwitchValueASCII(switches::kNetworkCountryIso) 253 command_line->GetSwitchValueASCII(switches::kNetworkCountryIso)
258 : net::android::GetTelephonyNetworkCountryIso(); 254 : net::android::GetTelephonyNetworkCountryIso();
259 } 255 }
260 256
261 WebContentsAndroid::~WebContentsAndroid() { 257 WebContentsAndroid::~WebContentsAndroid() {
262 DCHECK(g_allocated_web_contents_androids.Get().find(this) != 258 DCHECK(g_allocated_web_contents_androids.Get().find(this) !=
263 g_allocated_web_contents_androids.Get().end()); 259 g_allocated_web_contents_androids.Get().end());
264 g_allocated_web_contents_androids.Get().erase(this); 260 g_allocated_web_contents_androids.Get().erase(this);
265 Java_WebContentsImpl_clearNativePtr(AttachCurrentThread(), obj_.obj()); 261 Java_WebContentsImpl_clearNativePtr(AttachCurrentThread(), obj_);
266 } 262 }
267 263
268 base::android::ScopedJavaLocalRef<jobject> 264 base::android::ScopedJavaLocalRef<jobject>
269 WebContentsAndroid::GetJavaObject() { 265 WebContentsAndroid::GetJavaObject() {
270 return base::android::ScopedJavaLocalRef<jobject>(obj_); 266 return base::android::ScopedJavaLocalRef<jobject>(obj_);
271 } 267 }
272 268
273 ScopedJavaLocalRef<jstring> WebContentsAndroid::GetTitle( 269 ScopedJavaLocalRef<jstring> WebContentsAndroid::GetTitle(
274 JNIEnv* env, 270 JNIEnv* env,
275 const JavaParamRef<jobject>& obj) const { 271 const JavaParamRef<jobject>& obj) const {
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 684
689 void WebContentsAndroid::OnFinishGetContentBitmap( 685 void WebContentsAndroid::OnFinishGetContentBitmap(
690 ScopedJavaGlobalRef<jobject>* obj, 686 ScopedJavaGlobalRef<jobject>* obj,
691 ScopedJavaGlobalRef<jobject>* callback, 687 ScopedJavaGlobalRef<jobject>* callback,
692 const SkBitmap& bitmap, 688 const SkBitmap& bitmap,
693 ReadbackResponse response) { 689 ReadbackResponse response) {
694 JNIEnv* env = base::android::AttachCurrentThread(); 690 JNIEnv* env = base::android::AttachCurrentThread();
695 ScopedJavaLocalRef<jobject> java_bitmap; 691 ScopedJavaLocalRef<jobject> java_bitmap;
696 if (response == READBACK_SUCCESS) 692 if (response == READBACK_SUCCESS)
697 java_bitmap = gfx::ConvertToJavaBitmap(&bitmap); 693 java_bitmap = gfx::ConvertToJavaBitmap(&bitmap);
698 Java_WebContentsImpl_onGetContentBitmapFinished(env, 694 Java_WebContentsImpl_onGetContentBitmapFinished(
699 obj->obj(), 695 env, obj->obj(), callback->obj(), java_bitmap, response);
700 callback->obj(),
701 java_bitmap.obj(),
702 response);
703 } 696 }
704 697
705 void WebContentsAndroid::OnFinishDownloadImage( 698 void WebContentsAndroid::OnFinishDownloadImage(
706 base::android::ScopedJavaGlobalRef<jobject>* obj, 699 base::android::ScopedJavaGlobalRef<jobject>* obj,
707 base::android::ScopedJavaGlobalRef<jobject>* callback, 700 base::android::ScopedJavaGlobalRef<jobject>* callback,
708 int id, 701 int id,
709 int http_status_code, 702 int http_status_code,
710 const GURL& url, 703 const GURL& url,
711 const std::vector<SkBitmap>& bitmaps, 704 const std::vector<SkBitmap>& bitmaps,
712 const std::vector<gfx::Size>& sizes) { 705 const std::vector<gfx::Size>& sizes) {
713 JNIEnv* env = base::android::AttachCurrentThread(); 706 JNIEnv* env = base::android::AttachCurrentThread();
714 ScopedJavaLocalRef<jobject> jbitmaps = 707 ScopedJavaLocalRef<jobject> jbitmaps =
715 Java_WebContentsImpl_createBitmapList(env); 708 Java_WebContentsImpl_createBitmapList(env);
716 ScopedJavaLocalRef<jobject> jsizes = 709 ScopedJavaLocalRef<jobject> jsizes =
717 Java_WebContentsImpl_createSizeList(env); 710 Java_WebContentsImpl_createSizeList(env);
718 ScopedJavaLocalRef<jstring> jurl = 711 ScopedJavaLocalRef<jstring> jurl =
719 base::android::ConvertUTF8ToJavaString(env, url.spec()); 712 base::android::ConvertUTF8ToJavaString(env, url.spec());
720 713
721 for (const SkBitmap& bitmap : bitmaps) { 714 for (const SkBitmap& bitmap : bitmaps) {
722 // WARNING: convering to java bitmaps results in duplicate memory 715 // WARNING: convering to java bitmaps results in duplicate memory
723 // allocations, which increases the chance of OOMs if DownloadImage() is 716 // allocations, which increases the chance of OOMs if DownloadImage() is
724 // misused. 717 // misused.
725 ScopedJavaLocalRef<jobject> jbitmap = gfx::ConvertToJavaBitmap(&bitmap); 718 ScopedJavaLocalRef<jobject> jbitmap = gfx::ConvertToJavaBitmap(&bitmap);
726 Java_WebContentsImpl_addToBitmapList(env, jbitmaps.obj(), jbitmap.obj()); 719 Java_WebContentsImpl_addToBitmapList(env, jbitmaps, jbitmap);
727 } 720 }
728 for (const gfx::Size& size : sizes) { 721 for (const gfx::Size& size : sizes) {
729 Java_WebContentsImpl_createSizeAndAddToList( 722 Java_WebContentsImpl_createSizeAndAddToList(env, jsizes, size.width(),
730 env, jsizes.obj(), size.width(), size.height()); 723 size.height());
731 } 724 }
732 Java_WebContentsImpl_onDownloadImageFinished( 725 Java_WebContentsImpl_onDownloadImageFinished(env, obj->obj(), callback->obj(),
733 env, obj->obj(), callback->obj(), id, 726 id, http_status_code, jurl,
734 http_status_code, jurl.obj(), jbitmaps.obj(), jsizes.obj()); 727 jbitmaps, jsizes);
735 } 728 }
736 } // namespace content 729 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/time_zone_monitor_android.cc ('k') | content/common/android/hash_set.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698