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

Side by Side Diff: content/browser/accessibility/browser_accessibility_manager_android.cc

Issue 1489453003: jni: Pass method parameters as JavaParamRef in content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 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/accessibility/browser_accessibility_manager_android.h" 5 #include "content/browser/accessibility/browser_accessibility_manager_android.h"
6 6
7 #include <cmath> 7 #include <cmath>
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 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 env, obj.obj(), node->GetId()); 185 env, obj.obj(), node->GetId());
186 } 186 }
187 break; 187 break;
188 default: 188 default:
189 // There are some notifications that aren't meaningful on Android. 189 // There are some notifications that aren't meaningful on Android.
190 // It's okay to skip them. 190 // It's okay to skip them.
191 break; 191 break;
192 } 192 }
193 } 193 }
194 194
195 jint BrowserAccessibilityManagerAndroid::GetRootId(JNIEnv* env, jobject obj) { 195 jint BrowserAccessibilityManagerAndroid::GetRootId(
196 JNIEnv* env,
197 const JavaParamRef<jobject>& obj) {
196 if (GetRoot()) 198 if (GetRoot())
197 return static_cast<jint>(GetRoot()->GetId()); 199 return static_cast<jint>(GetRoot()->GetId());
198 else 200 else
199 return -1; 201 return -1;
200 } 202 }
201 203
202 jboolean BrowserAccessibilityManagerAndroid::IsNodeValid( 204 jboolean BrowserAccessibilityManagerAndroid::IsNodeValid(
203 JNIEnv* env, jobject obj, jint id) { 205 JNIEnv* env,
206 const JavaParamRef<jobject>& obj,
207 jint id) {
204 return GetFromID(id) != NULL; 208 return GetFromID(id) != NULL;
205 } 209 }
206 210
207 void BrowserAccessibilityManagerAndroid::HitTest( 211 void BrowserAccessibilityManagerAndroid::HitTest(
208 JNIEnv* env, jobject obj, jint x, jint y) { 212 JNIEnv* env,
213 const JavaParamRef<jobject>& obj,
214 jint x,
215 jint y) {
209 if (delegate()) 216 if (delegate())
210 delegate()->AccessibilityHitTest(gfx::Point(x, y)); 217 delegate()->AccessibilityHitTest(gfx::Point(x, y));
211 } 218 }
212 219
213 jboolean BrowserAccessibilityManagerAndroid::IsEditableText( 220 jboolean BrowserAccessibilityManagerAndroid::IsEditableText(
214 JNIEnv* env, jobject obj, jint id) { 221 JNIEnv* env,
222 const JavaParamRef<jobject>& obj,
223 jint id) {
215 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 224 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
216 GetFromID(id)); 225 GetFromID(id));
217 if (!node) 226 if (!node)
218 return false; 227 return false;
219 228
220 return node->IsEditableText(); 229 return node->IsEditableText();
221 } 230 }
222 231
223 jint BrowserAccessibilityManagerAndroid::GetEditableTextSelectionStart( 232 jint BrowserAccessibilityManagerAndroid::GetEditableTextSelectionStart(
224 JNIEnv* env, jobject obj, jint id) { 233 JNIEnv* env,
234 const JavaParamRef<jobject>& obj,
235 jint id) {
225 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 236 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
226 GetFromID(id)); 237 GetFromID(id));
227 if (!node) 238 if (!node)
228 return false; 239 return false;
229 240
230 return node->GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START); 241 return node->GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START);
231 } 242 }
232 243
233 jint BrowserAccessibilityManagerAndroid::GetEditableTextSelectionEnd( 244 jint BrowserAccessibilityManagerAndroid::GetEditableTextSelectionEnd(
234 JNIEnv* env, jobject obj, jint id) { 245 JNIEnv* env,
246 const JavaParamRef<jobject>& obj,
247 jint id) {
235 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 248 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
236 GetFromID(id)); 249 GetFromID(id));
237 if (!node) 250 if (!node)
238 return false; 251 return false;
239 252
240 return node->GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END); 253 return node->GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END);
241 } 254 }
242 255
243 jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityNodeInfo( 256 jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityNodeInfo(
244 JNIEnv* env, jobject obj, jobject info, jint id) { 257 JNIEnv* env,
258 const JavaParamRef<jobject>& obj,
259 const JavaParamRef<jobject>& info,
260 jint id) {
245 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 261 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
246 GetFromID(id)); 262 GetFromID(id));
247 if (!node) 263 if (!node)
248 return false; 264 return false;
249 265
250 if (node->GetParent()) { 266 if (node->GetParent()) {
251 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoParent( 267 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoParent(
252 env, obj, info, node->GetParent()->GetId()); 268 env, obj, info, node->GetParent()->GetId());
253 } 269 }
254 for (unsigned i = 0; i < node->PlatformChildCount(); ++i) { 270 for (unsigned i = 0; i < node->PlatformChildCount(); ++i) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 node->AndroidRangeType(), 360 node->AndroidRangeType(),
345 node->RangeMin(), 361 node->RangeMin(),
346 node->RangeMax(), 362 node->RangeMax(),
347 node->RangeCurrentValue()); 363 node->RangeCurrentValue());
348 } 364 }
349 365
350 return true; 366 return true;
351 } 367 }
352 368
353 jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityEvent( 369 jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityEvent(
354 JNIEnv* env, jobject obj, jobject event, jint id, jint event_type) { 370 JNIEnv* env,
371 const JavaParamRef<jobject>& obj,
372 const JavaParamRef<jobject>& event,
373 jint id,
374 jint event_type) {
355 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 375 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
356 GetFromID(id)); 376 GetFromID(id));
357 if (!node) 377 if (!node)
358 return false; 378 return false;
359 379
360 Java_BrowserAccessibilityManager_setAccessibilityEventBooleanAttributes( 380 Java_BrowserAccessibilityManager_setAccessibilityEventBooleanAttributes(
361 env, obj, event, 381 env, obj, event,
362 node->IsChecked(), 382 node->IsChecked(),
363 node->IsEnabled(), 383 node->IsEnabled(),
364 node->IsPassword(), 384 node->IsPassword(),
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 env, obj, event, 465 env, obj, event,
446 node->AndroidRangeType(), 466 node->AndroidRangeType(),
447 node->RangeMin(), 467 node->RangeMin(),
448 node->RangeMax(), 468 node->RangeMax(),
449 node->RangeCurrentValue()); 469 node->RangeCurrentValue());
450 } 470 }
451 471
452 return true; 472 return true;
453 } 473 }
454 474
455 void BrowserAccessibilityManagerAndroid::Click( 475 void BrowserAccessibilityManagerAndroid::Click(JNIEnv* env,
456 JNIEnv* env, jobject obj, jint id) { 476 const JavaParamRef<jobject>& obj,
477 jint id) {
457 BrowserAccessibility* node = GetFromID(id); 478 BrowserAccessibility* node = GetFromID(id);
458 if (node) 479 if (node)
459 DoDefaultAction(*node); 480 DoDefaultAction(*node);
460 } 481 }
461 482
462 void BrowserAccessibilityManagerAndroid::Focus( 483 void BrowserAccessibilityManagerAndroid::Focus(JNIEnv* env,
463 JNIEnv* env, jobject obj, jint id) { 484 const JavaParamRef<jobject>& obj,
485 jint id) {
464 BrowserAccessibility* node = GetFromID(id); 486 BrowserAccessibility* node = GetFromID(id);
465 if (node) 487 if (node)
466 SetFocus(node, true); 488 SetFocus(node, true);
467 } 489 }
468 490
469 void BrowserAccessibilityManagerAndroid::Blur(JNIEnv* env, jobject obj) { 491 void BrowserAccessibilityManagerAndroid::Blur(
492 JNIEnv* env,
493 const JavaParamRef<jobject>& obj) {
470 SetFocus(GetRoot(), true); 494 SetFocus(GetRoot(), true);
471 } 495 }
472 496
473 void BrowserAccessibilityManagerAndroid::ScrollToMakeNodeVisible( 497 void BrowserAccessibilityManagerAndroid::ScrollToMakeNodeVisible(
474 JNIEnv* env, jobject obj, jint id) { 498 JNIEnv* env,
499 const JavaParamRef<jobject>& obj,
500 jint id) {
475 BrowserAccessibility* node = GetFromID(id); 501 BrowserAccessibility* node = GetFromID(id);
476 if (node) 502 if (node)
477 ScrollToMakeVisible(*node, gfx::Rect(node->GetLocation().size())); 503 ScrollToMakeVisible(*node, gfx::Rect(node->GetLocation().size()));
478 } 504 }
479 505
480 void BrowserAccessibilityManagerAndroid::SetTextFieldValue( 506 void BrowserAccessibilityManagerAndroid::SetTextFieldValue(
481 JNIEnv* env, jobject obj, jint id, jstring value) { 507 JNIEnv* env,
508 const JavaParamRef<jobject>& obj,
509 jint id,
510 const JavaParamRef<jstring>& value) {
482 BrowserAccessibility* node = GetFromID(id); 511 BrowserAccessibility* node = GetFromID(id);
483 if (node) { 512 if (node) {
484 BrowserAccessibilityManager::SetValue( 513 BrowserAccessibilityManager::SetValue(
485 *node, base::android::ConvertJavaStringToUTF16(env, value)); 514 *node, base::android::ConvertJavaStringToUTF16(env, value));
486 } 515 }
487 } 516 }
488 517
489 void BrowserAccessibilityManagerAndroid::SetSelection( 518 void BrowserAccessibilityManagerAndroid::SetSelection(
490 JNIEnv* env, jobject obj, jint id, jint start, jint end) { 519 JNIEnv* env,
520 const JavaParamRef<jobject>& obj,
521 jint id,
522 jint start,
523 jint end) {
491 BrowserAccessibility* node = GetFromID(id); 524 BrowserAccessibility* node = GetFromID(id);
492 if (node) 525 if (node)
493 SetTextSelection(*node, start, end); 526 SetTextSelection(*node, start, end);
494 } 527 }
495 528
496 jboolean BrowserAccessibilityManagerAndroid::AdjustSlider( 529 jboolean BrowserAccessibilityManagerAndroid::AdjustSlider(
497 JNIEnv* env, jobject obj, jint id, jboolean increment) { 530 JNIEnv* env,
531 const JavaParamRef<jobject>& obj,
532 jint id,
533 jboolean increment) {
498 BrowserAccessibility* node = GetFromID(id); 534 BrowserAccessibility* node = GetFromID(id);
499 if (!node) 535 if (!node)
500 return false; 536 return false;
501 537
502 BrowserAccessibilityAndroid* android_node = 538 BrowserAccessibilityAndroid* android_node =
503 static_cast<BrowserAccessibilityAndroid*>(node); 539 static_cast<BrowserAccessibilityAndroid*>(node);
504 540
505 if (!android_node->IsSlider() || !android_node->IsEnabled()) 541 if (!android_node->IsSlider() || !android_node->IsEnabled())
506 return false; 542 return false;
507 543
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 // leaf node. 578 // leaf node.
543 } 579 }
544 ancestor = static_cast<BrowserAccessibilityAndroid*>(ancestor->GetParent()); 580 ancestor = static_cast<BrowserAccessibilityAndroid*>(ancestor->GetParent());
545 } 581 }
546 582
547 Java_BrowserAccessibilityManager_handleHover( 583 Java_BrowserAccessibilityManager_handleHover(
548 env, obj.obj(), node->GetId()); 584 env, obj.obj(), node->GetId());
549 } 585 }
550 586
551 jint BrowserAccessibilityManagerAndroid::FindElementType( 587 jint BrowserAccessibilityManagerAndroid::FindElementType(
552 JNIEnv* env, jobject obj, jint start_id, jstring element_type_str, 588 JNIEnv* env,
589 const JavaParamRef<jobject>& obj,
590 jint start_id,
591 const JavaParamRef<jstring>& element_type_str,
553 jboolean forwards) { 592 jboolean forwards) {
554 BrowserAccessibility* node = GetFromID(start_id); 593 BrowserAccessibility* node = GetFromID(start_id);
555 if (!node) 594 if (!node)
556 return 0; 595 return 0;
557 596
558 AndroidHtmlElementType element_type = HtmlElementTypeFromString( 597 AndroidHtmlElementType element_type = HtmlElementTypeFromString(
559 base::android::ConvertJavaStringToUTF16(env, element_type_str)); 598 base::android::ConvertJavaStringToUTF16(env, element_type_str));
560 599
561 node = forwards ? NextInTreeOrder(node) : PreviousInTreeOrder(node); 600 node = forwards ? NextInTreeOrder(node) : PreviousInTreeOrder(node);
562 while (node) { 601 while (node) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 break; 638 break;
600 } 639 }
601 640
602 node = forwards ? NextInTreeOrder(node) : PreviousInTreeOrder(node); 641 node = forwards ? NextInTreeOrder(node) : PreviousInTreeOrder(node);
603 } 642 }
604 643
605 return 0; 644 return 0;
606 } 645 }
607 646
608 jboolean BrowserAccessibilityManagerAndroid::NextAtGranularity( 647 jboolean BrowserAccessibilityManagerAndroid::NextAtGranularity(
609 JNIEnv* env, jobject obj, jint granularity, jboolean extend_selection, 648 JNIEnv* env,
610 jint id, jint cursor_index) { 649 const JavaParamRef<jobject>& obj,
650 jint granularity,
651 jboolean extend_selection,
652 jint id,
653 jint cursor_index) {
611 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 654 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
612 GetFromID(id)); 655 GetFromID(id));
613 if (!node) 656 if (!node)
614 return false; 657 return false;
615 658
616 jint start_index = -1; 659 jint start_index = -1;
617 int end_index = -1; 660 int end_index = -1;
618 if (NextAtGranularity(granularity, cursor_index, node, 661 if (NextAtGranularity(granularity, cursor_index, node,
619 &start_index, &end_index)) { 662 &start_index, &end_index)) {
620 base::string16 text; 663 base::string16 text;
621 if (!node->IsPassword() || 664 if (!node->IsPassword() ||
622 Java_BrowserAccessibilityManager_shouldExposePasswordText(env, obj)) { 665 Java_BrowserAccessibilityManager_shouldExposePasswordText(env, obj)) {
623 text = node->GetText(); 666 text = node->GetText();
624 } 667 }
625 Java_BrowserAccessibilityManager_finishGranularityMove( 668 Java_BrowserAccessibilityManager_finishGranularityMove(
626 env, obj, base::android::ConvertUTF16ToJavaString( 669 env, obj, base::android::ConvertUTF16ToJavaString(
627 env, text).obj(), 670 env, text).obj(),
628 extend_selection, start_index, end_index, true); 671 extend_selection, start_index, end_index, true);
629 return true; 672 return true;
630 } 673 }
631 return false; 674 return false;
632 } 675 }
633 676
634 jboolean BrowserAccessibilityManagerAndroid::PreviousAtGranularity( 677 jboolean BrowserAccessibilityManagerAndroid::PreviousAtGranularity(
635 JNIEnv* env, jobject obj, jint granularity, jboolean extend_selection, 678 JNIEnv* env,
636 jint id, jint cursor_index) { 679 const JavaParamRef<jobject>& obj,
680 jint granularity,
681 jboolean extend_selection,
682 jint id,
683 jint cursor_index) {
637 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 684 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
638 GetFromID(id)); 685 GetFromID(id));
639 if (!node) 686 if (!node)
640 return false; 687 return false;
641 688
642 jint start_index = -1; 689 jint start_index = -1;
643 int end_index = -1; 690 int end_index = -1;
644 if (PreviousAtGranularity(granularity, cursor_index, node, 691 if (PreviousAtGranularity(granularity, cursor_index, node,
645 &start_index, &end_index)) { 692 &start_index, &end_index)) {
646 Java_BrowserAccessibilityManager_finishGranularityMove( 693 Java_BrowserAccessibilityManager_finishGranularityMove(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 break; 778 break;
732 } 779 }
733 default: 780 default:
734 NOTREACHED(); 781 NOTREACHED();
735 } 782 }
736 783
737 return true; 784 return true;
738 } 785 }
739 786
740 void BrowserAccessibilityManagerAndroid::SetAccessibilityFocus( 787 void BrowserAccessibilityManagerAndroid::SetAccessibilityFocus(
741 JNIEnv* env, jobject obj, jint id) { 788 JNIEnv* env,
789 const JavaParamRef<jobject>& obj,
790 jint id) {
742 if (delegate_) 791 if (delegate_)
743 delegate_->AccessibilitySetAccessibilityFocus(id); 792 delegate_->AccessibilitySetAccessibilityFocus(id);
744 } 793 }
745 794
746 bool BrowserAccessibilityManagerAndroid::IsSlider( 795 bool BrowserAccessibilityManagerAndroid::IsSlider(
747 JNIEnv* env, jobject obj, jint id) { 796 JNIEnv* env,
797 const JavaParamRef<jobject>& obj,
798 jint id) {
748 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 799 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
749 GetFromID(id)); 800 GetFromID(id));
750 if (!node) 801 if (!node)
751 return false; 802 return false;
752 803
753 return node->GetRole() == ui::AX_ROLE_SLIDER; 804 return node->GetRole() == ui::AX_ROLE_SLIDER;
754 } 805 }
755 806
756 bool BrowserAccessibilityManagerAndroid::Scroll( 807 bool BrowserAccessibilityManagerAndroid::Scroll(
757 JNIEnv* env, jobject obj, jint id, int direction) { 808 JNIEnv* env,
809 const JavaParamRef<jobject>& obj,
810 jint id,
811 int direction) {
758 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( 812 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>(
759 GetFromID(id)); 813 GetFromID(id));
760 if (!node) 814 if (!node)
761 return false; 815 return false;
762 816
763 return node->Scroll(direction); 817 return node->Scroll(direction);
764 } 818 }
765 819
766 void BrowserAccessibilityManagerAndroid::OnAtomicUpdateFinished( 820 void BrowserAccessibilityManagerAndroid::OnAtomicUpdateFinished(
767 ui::AXTree* tree, 821 ui::AXTree* tree,
(...skipping 13 matching lines...) Expand all
781 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { 835 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() {
782 // The Java layer handles the root scroll offset. 836 // The Java layer handles the root scroll offset.
783 return false; 837 return false;
784 } 838 }
785 839
786 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { 840 bool RegisterBrowserAccessibilityManager(JNIEnv* env) {
787 return RegisterNativesImpl(env); 841 return RegisterNativesImpl(env);
788 } 842 }
789 843
790 } // namespace content 844 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698