| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2  * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions are | 5  * modification, are permitted provided that the following conditions are | 
| 6  * met: | 6  * met: | 
| 7  * | 7  * | 
| 8  *     * Redistributions of source code must retain the above copyright | 8  *     * Redistributions of source code must retain the above copyright | 
| 9  * notice, this list of conditions and the following disclaimer. | 9  * notice, this list of conditions and the following disclaimer. | 
| 10  *     * Redistributions in binary form must reproduce the above | 10  *     * Redistributions in binary form must reproduce the above | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 54 #include "core/frame/FrameHost.h" | 54 #include "core/frame/FrameHost.h" | 
| 55 #include "core/frame/FrameView.h" | 55 #include "core/frame/FrameView.h" | 
| 56 #include "core/frame/LocalFrame.h" | 56 #include "core/frame/LocalFrame.h" | 
| 57 #include "core/frame/PageScaleConstraintsSet.h" | 57 #include "core/frame/PageScaleConstraintsSet.h" | 
| 58 #include "core/frame/RemoteFrame.h" | 58 #include "core/frame/RemoteFrame.h" | 
| 59 #include "core/frame/Settings.h" | 59 #include "core/frame/Settings.h" | 
| 60 #include "core/frame/SmartClip.h" | 60 #include "core/frame/SmartClip.h" | 
| 61 #include "core/frame/TopControls.h" | 61 #include "core/frame/TopControls.h" | 
| 62 #include "core/frame/UseCounter.h" | 62 #include "core/frame/UseCounter.h" | 
| 63 #include "core/frame/VisualViewport.h" | 63 #include "core/frame/VisualViewport.h" | 
|  | 64 #include "core/html/HTMLFormElement.h" | 
| 64 #include "core/html/HTMLInputElement.h" | 65 #include "core/html/HTMLInputElement.h" | 
| 65 #include "core/html/HTMLMediaElement.h" | 66 #include "core/html/HTMLMediaElement.h" | 
| 66 #include "core/html/HTMLPlugInElement.h" | 67 #include "core/html/HTMLPlugInElement.h" | 
| 67 #include "core/html/HTMLTextAreaElement.h" | 68 #include "core/html/HTMLTextAreaElement.h" | 
| 68 #include "core/input/EventHandler.h" | 69 #include "core/input/EventHandler.h" | 
| 69 #include "core/input/TouchActionUtil.h" | 70 #include "core/input/TouchActionUtil.h" | 
| 70 #include "core/layout/LayoutPart.h" | 71 #include "core/layout/LayoutPart.h" | 
| 71 #include "core/layout/TextAutosizer.h" | 72 #include "core/layout/TextAutosizer.h" | 
| 72 #include "core/layout/api/LayoutViewItem.h" | 73 #include "core/layout/api/LayoutViewItem.h" | 
| 73 #include "core/layout/compositing/PaintLayerCompositor.h" | 74 #include "core/layout/compositing/PaintLayerCompositor.h" | 
| (...skipping 2340 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2414     Element* editable = focused->selection().rootEditableElementOrDocumentElemen
      t(); | 2415     Element* editable = focused->selection().rootEditableElementOrDocumentElemen
      t(); | 
| 2415     DCHECK(editable); | 2416     DCHECK(editable); | 
| 2416 | 2417 | 
| 2417     // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets | 2418     // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets | 
| 2418     // needs to be audited.  See http://crbug.com/590369 for more details. | 2419     // needs to be audited.  See http://crbug.com/590369 for more details. | 
| 2419     editable->document().updateStyleAndLayoutIgnorePendingStylesheets(); | 2420     editable->document().updateStyleAndLayoutIgnorePendingStylesheets(); | 
| 2420 | 2421 | 
| 2421     return PlainTextRange::create(*editable, range); | 2422     return PlainTextRange::create(*editable, range); | 
| 2422 } | 2423 } | 
| 2423 | 2424 | 
|  | 2425 int textInputActionFlags(int type, FocusController& focusController) { | 
|  | 2426     if (type == WebTextInputTypeSearch) { | 
|  | 2427         return WebTextInputFlagActionSearch; | 
|  | 2428     } | 
|  | 2429     HTMLElement* current = toHTMLElement(focusController.getCurrentElementForFoc
      usNavigation(WebFocusTypeForward)); | 
|  | 2430     if (!current) | 
|  | 2431         return 0; | 
|  | 2432 | 
|  | 2433     HTMLFormElement* currentForm = FormAssociatedElement::findAssociatedForm(cur
      rent); | 
|  | 2434 | 
|  | 2435     bool hasNextFocusableInFormOrDocument = false; | 
|  | 2436     // TODO(changwan): optimize this. | 
|  | 2437     Element* nextFocusableElement = focusController.findNextFocusableElementInDo
      cumentOrder(); | 
|  | 2438     if (nextFocusableElement) { | 
|  | 2439         HTMLElement* nextFocusableHtmlElement = toHTMLElement(nextFocusableEleme
      nt); | 
|  | 2440         if (nextFocusableHtmlElement) { | 
|  | 2441             HTMLFormElement* nextFocusableElementForm = FormAssociatedElement::f
      indAssociatedForm(nextFocusableHtmlElement); | 
|  | 2442             // Both currentForm and nextFocusableElementForm may be nullptr. | 
|  | 2443             hasNextFocusableInFormOrDocument = currentForm == nextFocusableEleme
      ntForm; | 
|  | 2444         } | 
|  | 2445     } | 
|  | 2446 | 
|  | 2447     int flags = 0; | 
|  | 2448     if (hasNextFocusableInFormOrDocument) { | 
|  | 2449         flags |= WebTextInputFlagActionNext; | 
|  | 2450     } else if (currentForm) { | 
|  | 2451         flags |= WebTextInputFlagActionGo; | 
|  | 2452     } else { | 
|  | 2453         flags |= WebTextInputFlagActionNone; | 
|  | 2454     } | 
|  | 2455     return flags; | 
|  | 2456 } | 
|  | 2457 | 
| 2424 // TODO(ekaramad):This method is almost duplicated in WebFrameWidgetImpl as | 2458 // TODO(ekaramad):This method is almost duplicated in WebFrameWidgetImpl as | 
| 2425 // well. This code needs to be refactored  (http://crbug.com/629721). | 2459 // well. This code needs to be refactored  (http://crbug.com/629721). | 
| 2426 WebTextInputInfo WebViewImpl::textInputInfo() | 2460 WebTextInputInfo WebViewImpl::textInputInfo() | 
| 2427 { | 2461 { | 
| 2428     WebTextInputInfo info; | 2462     WebTextInputInfo info; | 
| 2429 | 2463 | 
| 2430     LocalFrame* focused = focusedLocalFrameInWidget(); | 2464     LocalFrame* focused = focusedLocalFrameInWidget(); | 
| 2431     if (!focused) | 2465     if (!focused) | 
| 2432         return info; | 2466         return info; | 
| 2433 | 2467 | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 2449 | 2483 | 
| 2450     if (!focused->editor().canEdit()) | 2484     if (!focused->editor().canEdit()) | 
| 2451         return info; | 2485         return info; | 
| 2452 | 2486 | 
| 2453     // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets n
      eeds to be audited. | 2487     // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets n
      eeds to be audited. | 
| 2454     // see http://crbug.com/590369 for more details. | 2488     // see http://crbug.com/590369 for more details. | 
| 2455     focused->document()->updateStyleAndLayoutIgnorePendingStylesheets(); | 2489     focused->document()->updateStyleAndLayoutIgnorePendingStylesheets(); | 
| 2456 | 2490 | 
| 2457     DocumentLifecycle::DisallowTransitionScope disallowTransition(focused->docum
      ent()->lifecycle()); | 2491     DocumentLifecycle::DisallowTransitionScope disallowTransition(focused->docum
      ent()->lifecycle()); | 
| 2458 | 2492 | 
|  | 2493     info.flags |= textInputActionFlags(info.type, page()->focusController()); | 
|  | 2494 | 
| 2459     // Emits an object replacement character for each replaced element so that | 2495     // Emits an object replacement character for each replaced element so that | 
| 2460     // it is exposed to IME and thus could be deleted by IME on android. | 2496     // it is exposed to IME and thus could be deleted by IME on android. | 
| 2461     info.value = plainText(EphemeralRange::rangeOfContents(*element), TextIterat
      orEmitsObjectReplacementCharacter); | 2497     info.value = plainText(EphemeralRange::rangeOfContents(*element), TextIterat
      orEmitsObjectReplacementCharacter); | 
| 2462 | 2498 | 
| 2463     if (info.value.isEmpty()) | 2499     if (info.value.isEmpty()) | 
| 2464         return info; | 2500         return info; | 
| 2465 | 2501 | 
| 2466     EphemeralRange firstRange = firstEphemeralRangeOf(selection.selection()); | 2502     EphemeralRange firstRange = firstEphemeralRangeOf(selection.selection()); | 
| 2467     if (firstRange.isNotNull()) { | 2503     if (firstRange.isNotNull()) { | 
| 2468         PlainTextRange plainTextRange(PlainTextRange::create(*element, firstRang
      e)); | 2504         PlainTextRange plainTextRange(PlainTextRange::create(*element, firstRang
      e)); | 
| (...skipping 2123 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4592         return nullptr; | 4628         return nullptr; | 
| 4593     return focusedFrame; | 4629     return focusedFrame; | 
| 4594 } | 4630 } | 
| 4595 | 4631 | 
| 4596 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const | 4632 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const | 
| 4597 { | 4633 { | 
| 4598     return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; | 4634     return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; | 
| 4599 } | 4635 } | 
| 4600 | 4636 | 
| 4601 } // namespace blink | 4637 } // namespace blink | 
| OLD | NEW | 
|---|