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

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

Issue 231953003: Show Ash like <select> popup on Android tablets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@newpopupx
Patch Set: Introduce DropdownPopupWindow Created 6 years, 8 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 "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/android/scoped_java_ref.h" 10 #include "base/android/scoped_java_ref.h"
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 } 504 }
505 505
506 void ContentViewCoreImpl::OnBackgroundColorChanged(SkColor color) { 506 void ContentViewCoreImpl::OnBackgroundColorChanged(SkColor color) {
507 JNIEnv* env = AttachCurrentThread(); 507 JNIEnv* env = AttachCurrentThread();
508 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 508 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
509 if (obj.is_null()) 509 if (obj.is_null())
510 return; 510 return;
511 Java_ContentViewCore_onBackgroundColorChanged(env, obj.obj(), color); 511 Java_ContentViewCore_onBackgroundColorChanged(env, obj.obj(), color);
512 } 512 }
513 513
514 void ContentViewCoreImpl::ShowSelectPopupMenu( 514 void ContentViewCoreImpl::ShowSelectPopupMenu(const gfx::Rect& bounds,
515 const std::vector<MenuItem>& items, int selected_item, bool multiple) { 515 const std::vector<MenuItem>& items, int selected_item, bool multiple) {
516 JNIEnv* env = AttachCurrentThread(); 516 JNIEnv* env = AttachCurrentThread();
517 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 517 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
518 if (j_obj.is_null()) 518 if (j_obj.is_null())
519 return; 519 return;
520 520
521 ScopedJavaLocalRef<jobject> bounds_rect(CreateJavaRect(env, bounds));
522
521 // For multi-select list popups we find the list of previous selections by 523 // For multi-select list popups we find the list of previous selections by
522 // iterating through the items. But for single selection popups we take the 524 // iterating through the items. But for single selection popups we take the
523 // given |selected_item| as is. 525 // given |selected_item| as is.
524 ScopedJavaLocalRef<jintArray> selected_array; 526 ScopedJavaLocalRef<jintArray> selected_array;
525 if (multiple) { 527 if (multiple) {
526 scoped_ptr<jint[]> native_selected_array(new jint[items.size()]); 528 scoped_ptr<jint[]> native_selected_array(new jint[items.size()]);
527 size_t selected_count = 0; 529 size_t selected_count = 0;
528 for (size_t i = 0; i < items.size(); ++i) { 530 for (size_t i = 0; i < items.size(); ++i) {
529 if (items[i].checked) 531 if (items[i].checked)
530 native_selected_array[selected_count++] = i; 532 native_selected_array[selected_count++] = i;
(...skipping 17 matching lines...) Expand all
548 labels.push_back(items[i].label); 550 labels.push_back(items[i].label);
549 jint enabled = 551 jint enabled =
550 (items[i].type == MenuItem::GROUP ? POPUP_ITEM_TYPE_GROUP : 552 (items[i].type == MenuItem::GROUP ? POPUP_ITEM_TYPE_GROUP :
551 (items[i].enabled ? POPUP_ITEM_TYPE_ENABLED : 553 (items[i].enabled ? POPUP_ITEM_TYPE_ENABLED :
552 POPUP_ITEM_TYPE_DISABLED)); 554 POPUP_ITEM_TYPE_DISABLED));
553 env->SetIntArrayRegion(enabled_array.obj(), i, 1, &enabled); 555 env->SetIntArrayRegion(enabled_array.obj(), i, 1, &enabled);
554 } 556 }
555 ScopedJavaLocalRef<jobjectArray> items_array( 557 ScopedJavaLocalRef<jobjectArray> items_array(
556 base::android::ToJavaArrayOfStrings(env, labels)); 558 base::android::ToJavaArrayOfStrings(env, labels));
557 Java_ContentViewCore_showSelectPopup(env, j_obj.obj(), 559 Java_ContentViewCore_showSelectPopup(env, j_obj.obj(),
558 items_array.obj(), enabled_array.obj(), 560 bounds_rect.obj(),
559 multiple, selected_array.obj()); 561 items_array.obj(),
562 enabled_array.obj(),
563 multiple,
564 selected_array.obj());
560 } 565 }
561 566
562 void ContentViewCoreImpl::HideSelectPopupMenu() { 567 void ContentViewCoreImpl::HideSelectPopupMenu() {
563 JNIEnv* env = AttachCurrentThread(); 568 JNIEnv* env = AttachCurrentThread();
564 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 569 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
565 if (!j_obj.is_null()) 570 if (!j_obj.is_null())
566 Java_ContentViewCore_hideSelectPopup(env, j_obj.obj()); 571 Java_ContentViewCore_hideSelectPopup(env, j_obj.obj());
567 } 572 }
568 573
569 void ContentViewCoreImpl::ConfirmTouchEvent(InputEventAckState ack_result) { 574 void ContentViewCoreImpl::ConfirmTouchEvent(InputEventAckState ack_result) {
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1797 reinterpret_cast<ui::ViewAndroid*>(view_android), 1802 reinterpret_cast<ui::ViewAndroid*>(view_android),
1798 reinterpret_cast<ui::WindowAndroid*>(window_android)); 1803 reinterpret_cast<ui::WindowAndroid*>(window_android));
1799 return reinterpret_cast<intptr_t>(view); 1804 return reinterpret_cast<intptr_t>(view);
1800 } 1805 }
1801 1806
1802 bool RegisterContentViewCore(JNIEnv* env) { 1807 bool RegisterContentViewCore(JNIEnv* env) {
1803 return RegisterNativesImpl(env); 1808 return RegisterNativesImpl(env);
1804 } 1809 }
1805 1810
1806 } // namespace content 1811 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698