| OLD | NEW |
| 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 package org.chromium.content.browser; | 5 package org.chromium.content.browser; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.annotation.TargetApi; | 8 import android.annotation.TargetApi; |
| 9 import android.app.Activity; | 9 import android.app.Activity; |
| 10 import android.app.SearchManager; | 10 import android.app.SearchManager; |
| (...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 return new ImeAdapter(mInputMethodManagerWrapper, | 735 return new ImeAdapter(mInputMethodManagerWrapper, |
| 736 new ImeAdapter.ImeAdapterDelegate() { | 736 new ImeAdapter.ImeAdapterDelegate() { |
| 737 @Override | 737 @Override |
| 738 public void onImeEvent() { | 738 public void onImeEvent() { |
| 739 mPopupZoomer.hide(true); | 739 mPopupZoomer.hide(true); |
| 740 getContentViewClient().onImeEvent(); | 740 getContentViewClient().onImeEvent(); |
| 741 if (mFocusedNodeEditable) dismissTextHandles(); | 741 if (mFocusedNodeEditable) dismissTextHandles(); |
| 742 } | 742 } |
| 743 | 743 |
| 744 @Override | 744 @Override |
| 745 public void onDismissInput() { | |
| 746 getContentViewClient().onImeStateChangeRequested(false); | |
| 747 } | |
| 748 | |
| 749 @Override | |
| 750 public void onKeyboardBoundsUnchanged() { | 745 public void onKeyboardBoundsUnchanged() { |
| 751 assert mWebContents != null; | 746 assert mWebContents != null; |
| 752 mWebContents.scrollFocusedEditableNodeIntoView(); | 747 mWebContents.scrollFocusedEditableNodeIntoView(); |
| 753 } | 748 } |
| 754 | 749 |
| 755 @Override | 750 @Override |
| 756 public boolean performContextMenuAction(int id) { | 751 public boolean performContextMenuAction(int id) { |
| 757 assert mWebContents != null; | 752 assert mWebContents != null; |
| 758 switch (id) { | 753 switch (id) { |
| 759 case android.R.id.selectAll: | 754 case android.R.id.selectAll: |
| (...skipping 16 matching lines...) Expand all Loading... |
| 776 @Override | 771 @Override |
| 777 public View getAttachedView() { | 772 public View getAttachedView() { |
| 778 return mContainerView; | 773 return mContainerView; |
| 779 } | 774 } |
| 780 | 775 |
| 781 @Override | 776 @Override |
| 782 public ResultReceiver getNewShowKeyboardReceiver() { | 777 public ResultReceiver getNewShowKeyboardReceiver() { |
| 783 return new ResultReceiver(new Handler()) { | 778 return new ResultReceiver(new Handler()) { |
| 784 @Override | 779 @Override |
| 785 public void onReceiveResult(int resultCode, Bundle r
esultData) { | 780 public void onReceiveResult(int resultCode, Bundle r
esultData) { |
| 786 getContentViewClient().onImeStateChangeRequested
( | |
| 787 resultCode == InputMethodManager.RESULT_
SHOWN | |
| 788 || resultCode == InputMethodManager.RESU
LT_UNCHANGED_SHOWN); | |
| 789 if (resultCode == InputMethodManager.RESULT_SHOW
N) { | 781 if (resultCode == InputMethodManager.RESULT_SHOW
N) { |
| 790 // If OSK is newly shown, delay the form foc
us until | 782 // If OSK is newly shown, delay the form foc
us until |
| 791 // the onSizeChanged (in order to adjust rel
ative to the | 783 // the onSizeChanged (in order to adjust rel
ative to the |
| 792 // new size). | 784 // new size). |
| 793 // TODO(jdduke): We should not assume that o
nSizeChanged will | 785 // TODO(jdduke): We should not assume that o
nSizeChanged will |
| 794 // always be called, crbug.com/294908. | 786 // always be called, crbug.com/294908. |
| 795 getContainerView().getWindowVisibleDisplayFr
ame( | 787 getContainerView().getWindowVisibleDisplayFr
ame( |
| 796 mFocusPreOSKViewportRect); | 788 mFocusPreOSKViewportRect); |
| 797 } else if (hasFocus() && resultCode | 789 } else if (hasFocus() && resultCode |
| 798 == InputMethodManager.RESULT_UNCHANGED_S
HOWN) { | 790 == InputMethodManager.RESULT_UNCHANGED_S
HOWN) { |
| (...skipping 1490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2289 } | 2281 } |
| 2290 | 2282 |
| 2291 /** | 2283 /** |
| 2292 * Hides the IME if the containerView is the active view for IME. | 2284 * Hides the IME if the containerView is the active view for IME. |
| 2293 */ | 2285 */ |
| 2294 public void hideImeIfNeeded() { | 2286 public void hideImeIfNeeded() { |
| 2295 // Hide input method window from the current view synchronously | 2287 // Hide input method window from the current view synchronously |
| 2296 // because ImeAdapter does so asynchronouly with a delay, and | 2288 // because ImeAdapter does so asynchronouly with a delay, and |
| 2297 // by the time when ImeAdapter dismisses the input, the | 2289 // by the time when ImeAdapter dismisses the input, the |
| 2298 // containerView may have lost focus. | 2290 // containerView may have lost focus. |
| 2299 // We cannot trust ContentViewClient#onImeStateChangeRequested to | |
| 2300 // hide the input window because it has an empty default implementation. | |
| 2301 // So we need to explicitly hide the input method window here. | |
| 2302 if (mInputMethodManagerWrapper.isActive(mContainerView)) { | 2291 if (mInputMethodManagerWrapper.isActive(mContainerView)) { |
| 2303 mInputMethodManagerWrapper.hideSoftInputFromWindow( | 2292 mInputMethodManagerWrapper.hideSoftInputFromWindow( |
| 2304 mContainerView.getWindowToken(), 0, null); | 2293 mContainerView.getWindowToken(), 0, null); |
| 2305 } | 2294 } |
| 2306 getContentViewClient().onImeStateChangeRequested(false); | |
| 2307 } | 2295 } |
| 2308 | 2296 |
| 2309 @SuppressWarnings("unused") | 2297 @SuppressWarnings("unused") |
| 2310 @CalledByNative | 2298 @CalledByNative |
| 2311 private void updateFrameInfo( | 2299 private void updateFrameInfo( |
| 2312 float scrollOffsetX, float scrollOffsetY, | 2300 float scrollOffsetX, float scrollOffsetY, |
| 2313 float pageScaleFactor, float minPageScaleFactor, float maxPageScaleF
actor, | 2301 float pageScaleFactor, float minPageScaleFactor, float maxPageScaleF
actor, |
| 2314 float contentWidth, float contentHeight, | 2302 float contentWidth, float contentHeight, |
| 2315 float viewportWidth, float viewportHeight, | 2303 float viewportWidth, float viewportHeight, |
| 2316 float controlsOffsetYCss, float contentOffsetYCss, | 2304 float controlsOffsetYCss, float contentOffsetYCss, |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2384 TraceEvent.end("ContentViewCore:updateFrameInfo"); | 2372 TraceEvent.end("ContentViewCore:updateFrameInfo"); |
| 2385 } | 2373 } |
| 2386 | 2374 |
| 2387 @CalledByNative | 2375 @CalledByNative |
| 2388 private void updateImeAdapter(long nativeImeAdapterAndroid, int textInputTyp
e, | 2376 private void updateImeAdapter(long nativeImeAdapterAndroid, int textInputTyp
e, |
| 2389 int textInputFlags, String text, int selectionStart, int selectionEn
d, | 2377 int textInputFlags, String text, int selectionStart, int selectionEn
d, |
| 2390 int compositionStart, int compositionEnd, boolean showImeIfNeeded, | 2378 int compositionStart, int compositionEnd, boolean showImeIfNeeded, |
| 2391 boolean isNonImeChange) { | 2379 boolean isNonImeChange) { |
| 2392 try { | 2380 try { |
| 2393 TraceEvent.begin("ContentViewCore.updateImeAdapter"); | 2381 TraceEvent.begin("ContentViewCore.updateImeAdapter"); |
| 2394 mFocusedNodeEditable = (textInputType != TextInputType.NONE); | 2382 boolean focusedNodeEditable = (textInputType != TextInputType.NONE); |
| 2395 if (!mFocusedNodeEditable) hidePastePopup(); | 2383 if (!focusedNodeEditable) hidePastePopup(); |
| 2396 | 2384 |
| 2397 mImeAdapter.updateKeyboardVisibility( | 2385 mImeAdapter.updateKeyboardVisibility( |
| 2398 nativeImeAdapterAndroid, textInputType, textInputFlags, show
ImeIfNeeded); | 2386 nativeImeAdapterAndroid, textInputType, textInputFlags, show
ImeIfNeeded); |
| 2399 | 2387 |
| 2400 if (mInputConnection != null) { | 2388 if (mInputConnection != null) { |
| 2401 mInputConnection.updateState(text, selectionStart, selectionEnd,
compositionStart, | 2389 mInputConnection.updateState(text, selectionStart, selectionEnd,
compositionStart, |
| 2402 compositionEnd, isNonImeChange); | 2390 compositionEnd, isNonImeChange); |
| 2403 } | 2391 } |
| 2404 | 2392 |
| 2405 if (mActionMode != null) mActionMode.invalidate(); | 2393 if (mActionMode != null) mActionMode.invalidate(); |
| 2394 |
| 2395 if (focusedNodeEditable != mFocusedNodeEditable) { |
| 2396 mFocusedNodeEditable = focusedNodeEditable; |
| 2397 getContentViewClient().onFocusedNodeEditabilityChanged(mFocusedN
odeEditable); |
| 2398 } |
| 2406 } finally { | 2399 } finally { |
| 2407 TraceEvent.end("ContentViewCore.updateImeAdapter"); | 2400 TraceEvent.end("ContentViewCore.updateImeAdapter"); |
| 2408 } | 2401 } |
| 2409 } | 2402 } |
| 2410 | 2403 |
| 2411 @CalledByNative | 2404 @CalledByNative |
| 2412 private void forceUpdateImeAdapter(long nativeImeAdapterAndroid) { | 2405 private void forceUpdateImeAdapter(long nativeImeAdapterAndroid) { |
| 2413 mImeAdapter.attach(nativeImeAdapterAndroid); | 2406 mImeAdapter.attach(nativeImeAdapterAndroid); |
| 2414 } | 2407 } |
| 2415 | 2408 |
| (...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3245 String textTrackFontVariant, String textTrackTextColor, String textT
rackTextShadow, | 3238 String textTrackFontVariant, String textTrackTextColor, String textT
rackTextShadow, |
| 3246 String textTrackTextSize); | 3239 String textTrackTextSize); |
| 3247 | 3240 |
| 3248 private native void nativeExtractSmartClipData(long nativeContentViewCoreImp
l, | 3241 private native void nativeExtractSmartClipData(long nativeContentViewCoreImp
l, |
| 3249 int x, int y, int w, int h); | 3242 int x, int y, int w, int h); |
| 3250 | 3243 |
| 3251 private native void nativeSetBackgroundOpaque(long nativeContentViewCoreImpl
, boolean opaque); | 3244 private native void nativeSetBackgroundOpaque(long nativeContentViewCoreImpl
, boolean opaque); |
| 3252 | 3245 |
| 3253 private native void nativeSetDrawsContent(long nativeContentViewCoreImpl, bo
olean draws); | 3246 private native void nativeSetDrawsContent(long nativeContentViewCoreImpl, bo
olean draws); |
| 3254 } | 3247 } |
| OLD | NEW |