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

Side by Side Diff: content/browser/android/content_view_core_impl.cc

Issue 2103243002: Factor out ContentViewAndroidDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 4 years, 5 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "content/browser/android/content_view_core_impl.h" 5 #include "content/browser/android/content_view_core_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.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 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 const gfx::Rect& bounds, 492 const gfx::Rect& bounds,
493 const std::vector<MenuItem>& items, 493 const std::vector<MenuItem>& items,
494 int selected_item, 494 int selected_item,
495 bool multiple, 495 bool multiple,
496 bool right_aligned) { 496 bool right_aligned) {
497 JNIEnv* env = AttachCurrentThread(); 497 JNIEnv* env = AttachCurrentThread();
498 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 498 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
499 if (j_obj.is_null()) 499 if (j_obj.is_null())
500 return; 500 return;
501 501
502 ScopedJavaLocalRef<jobject> bounds_rect(CreateJavaRect(env, bounds));
503
504 // For multi-select list popups we find the list of previous selections by 502 // For multi-select list popups we find the list of previous selections by
505 // iterating through the items. But for single selection popups we take the 503 // iterating through the items. But for single selection popups we take the
506 // given |selected_item| as is. 504 // given |selected_item| as is.
507 ScopedJavaLocalRef<jintArray> selected_array; 505 ScopedJavaLocalRef<jintArray> selected_array;
508 if (multiple) { 506 if (multiple) {
509 std::unique_ptr<jint[]> native_selected_array(new jint[items.size()]); 507 std::unique_ptr<jint[]> native_selected_array(new jint[items.size()]);
510 size_t selected_count = 0; 508 size_t selected_count = 0;
511 for (size_t i = 0; i < items.size(); ++i) { 509 for (size_t i = 0; i < items.size(); ++i) {
512 if (items[i].checked) 510 if (items[i].checked)
513 native_selected_array[selected_count++] = i; 511 native_selected_array[selected_count++] = i;
(...skipping 16 matching lines...) Expand all
530 for (size_t i = 0; i < items.size(); ++i) { 528 for (size_t i = 0; i < items.size(); ++i) {
531 labels.push_back(items[i].label); 529 labels.push_back(items[i].label);
532 jint enabled = 530 jint enabled =
533 (items[i].type == MenuItem::GROUP ? POPUP_ITEM_TYPE_GROUP : 531 (items[i].type == MenuItem::GROUP ? POPUP_ITEM_TYPE_GROUP :
534 (items[i].enabled ? POPUP_ITEM_TYPE_ENABLED : 532 (items[i].enabled ? POPUP_ITEM_TYPE_ENABLED :
535 POPUP_ITEM_TYPE_DISABLED)); 533 POPUP_ITEM_TYPE_DISABLED));
536 env->SetIntArrayRegion(enabled_array.obj(), i, 1, &enabled); 534 env->SetIntArrayRegion(enabled_array.obj(), i, 1, &enabled);
537 } 535 }
538 ScopedJavaLocalRef<jobjectArray> items_array( 536 ScopedJavaLocalRef<jobjectArray> items_array(
539 base::android::ToJavaArrayOfStrings(env, labels)); 537 base::android::ToJavaArrayOfStrings(env, labels));
538 ScopedJavaLocalRef<jobject> anchor_view = AcquireAnchorView(
539 gfx::RectF(bounds.x() * page_scale_,
540 bounds.y() * page_scale_,
541 bounds.width() * page_scale_,
542 bounds.height() * page_scale_));
540 Java_ContentViewCore_showSelectPopup( 543 Java_ContentViewCore_showSelectPopup(
541 env, j_obj.obj(), reinterpret_cast<intptr_t>(frame), bounds_rect.obj(), 544 env, j_obj.obj(), anchor_view.obj(), bounds.width() * page_scale_,
545 reinterpret_cast<intptr_t>(frame),
542 items_array.obj(), enabled_array.obj(), multiple, selected_array.obj(), 546 items_array.obj(), enabled_array.obj(), multiple, selected_array.obj(),
543 right_aligned); 547 right_aligned);
544 } 548 }
545 549
550 ScopedJavaLocalRef<jobject>
551 ContentViewCoreImpl::AcquireAnchorView(const gfx::RectF& bounds) {
552 JNIEnv* env = AttachCurrentThread();
553 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
554 if (j_obj.is_null())
555 return ScopedJavaLocalRef<jobject>();
556 return Java_ContentViewCore_acquireAnchorView(
557 env, j_obj.obj(), bounds.x(), bounds.y(), bounds.width(),
558 bounds.height());
559 }
560
546 void ContentViewCoreImpl::HideSelectPopupMenu() { 561 void ContentViewCoreImpl::HideSelectPopupMenu() {
547 JNIEnv* env = AttachCurrentThread(); 562 JNIEnv* env = AttachCurrentThread();
548 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 563 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
549 if (!j_obj.is_null()) 564 if (!j_obj.is_null())
550 Java_ContentViewCore_hideSelectPopup(env, j_obj.obj()); 565 Java_ContentViewCore_hideSelectPopup(env, j_obj.obj());
551 } 566 }
552 567
553 void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event, 568 void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event,
554 InputEventAckState ack_result) { 569 InputEventAckState ack_result) {
555 JNIEnv* env = AttachCurrentThread(); 570 JNIEnv* env = AttachCurrentThread();
(...skipping 1025 matching lines...) Expand 10 before | Expand all | Expand 10 after
1581 return ScopedJavaLocalRef<jobject>(); 1596 return ScopedJavaLocalRef<jobject>();
1582 1597
1583 return view->GetJavaObject(); 1598 return view->GetJavaObject();
1584 } 1599 }
1585 1600
1586 bool RegisterContentViewCore(JNIEnv* env) { 1601 bool RegisterContentViewCore(JNIEnv* env) {
1587 return RegisterNativesImpl(env); 1602 return RegisterNativesImpl(env);
1588 } 1603 }
1589 1604
1590 } // namespace content 1605 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698