| 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 1925 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1936 // We should use this |editor| object only to complete the ongoing | 1936 // We should use this |editor| object only to complete the ongoing |
| 1937 // composition. | 1937 // composition. |
| 1938 InputMethodController& inputMethodController = focused->inputMethodControlle
r(); | 1938 InputMethodController& inputMethodController = focused->inputMethodControlle
r(); |
| 1939 if (!focused->editor().canEdit() && !inputMethodController.hasComposition()) | 1939 if (!focused->editor().canEdit() && !inputMethodController.hasComposition()) |
| 1940 return false; | 1940 return false; |
| 1941 | 1941 |
| 1942 // We should verify the parent node of this IME composition node are | 1942 // We should verify the parent node of this IME composition node are |
| 1943 // editable because JavaScript may delete a parent node of the composition | 1943 // editable because JavaScript may delete a parent node of the composition |
| 1944 // node. In this case, WebKit crashes while deleting texts from the parent | 1944 // node. In this case, WebKit crashes while deleting texts from the parent |
| 1945 // node, which doesn't exist any longer. | 1945 // node, which doesn't exist any longer. |
| 1946 RefPtr<Range> range = inputMethodController.compositionRange(); | 1946 RefPtrWillBeRawPtr<Range> range = inputMethodController.compositionRange(); |
| 1947 if (range) { | 1947 if (range) { |
| 1948 Node* node = range->startContainer(); | 1948 Node* node = range->startContainer(); |
| 1949 if (!node || !node->isContentEditable()) | 1949 if (!node || !node->isContentEditable()) |
| 1950 return false; | 1950 return false; |
| 1951 } | 1951 } |
| 1952 | 1952 |
| 1953 // If we're not going to fire a keypress event, then the keydown event was | 1953 // If we're not going to fire a keypress event, then the keydown event was |
| 1954 // canceled. In that case, cancel any existing composition. | 1954 // canceled. In that case, cancel any existing composition. |
| 1955 if (text.isEmpty() || m_suppressNextKeypressEvent) { | 1955 if (text.isEmpty() || m_suppressNextKeypressEvent) { |
| 1956 // A browser process sent an IPC message which does not contain a valid | 1956 // A browser process sent an IPC message which does not contain a valid |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2000 | 2000 |
| 2001 return focused->inputMethodController().confirmCompositionOrInsertText(text,
selectionBehavior == KeepSelection ? InputMethodController::KeepSelection : Inp
utMethodController::DoNotKeepSelection); | 2001 return focused->inputMethodController().confirmCompositionOrInsertText(text,
selectionBehavior == KeepSelection ? InputMethodController::KeepSelection : Inp
utMethodController::DoNotKeepSelection); |
| 2002 } | 2002 } |
| 2003 | 2003 |
| 2004 bool WebViewImpl::compositionRange(size_t* location, size_t* length) | 2004 bool WebViewImpl::compositionRange(size_t* location, size_t* length) |
| 2005 { | 2005 { |
| 2006 LocalFrame* focused = toLocalFrame(focusedWebCoreFrame()); | 2006 LocalFrame* focused = toLocalFrame(focusedWebCoreFrame()); |
| 2007 if (!focused || !m_imeAcceptEvents) | 2007 if (!focused || !m_imeAcceptEvents) |
| 2008 return false; | 2008 return false; |
| 2009 | 2009 |
| 2010 RefPtr<Range> range = focused->inputMethodController().compositionRange(); | 2010 RefPtrWillBeRawPtr<Range> range = focused->inputMethodController().compositi
onRange(); |
| 2011 if (!range) | 2011 if (!range) |
| 2012 return false; | 2012 return false; |
| 2013 | 2013 |
| 2014 Element* editable = focused->selection().rootEditableElementOrDocumentElemen
t(); | 2014 Element* editable = focused->selection().rootEditableElementOrDocumentElemen
t(); |
| 2015 ASSERT(editable); | 2015 ASSERT(editable); |
| 2016 PlainTextRange plainTextRange(PlainTextRange::create(*editable, *range.get()
)); | 2016 PlainTextRange plainTextRange(PlainTextRange::create(*editable, *range.get()
)); |
| 2017 if (plainTextRange.isNull()) | 2017 if (plainTextRange.isNull()) |
| 2018 return false; | 2018 return false; |
| 2019 *location = plainTextRange.start(); | 2019 *location = plainTextRange.start(); |
| 2020 *length = plainTextRange.length(); | 2020 *length = plainTextRange.length(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2041 return info; | 2041 return info; |
| 2042 | 2042 |
| 2043 if (!focused->editor().canEdit()) | 2043 if (!focused->editor().canEdit()) |
| 2044 return info; | 2044 return info; |
| 2045 | 2045 |
| 2046 info.value = plainText(rangeOfContents(node).get()); | 2046 info.value = plainText(rangeOfContents(node).get()); |
| 2047 | 2047 |
| 2048 if (info.value.isEmpty()) | 2048 if (info.value.isEmpty()) |
| 2049 return info; | 2049 return info; |
| 2050 | 2050 |
| 2051 if (RefPtr<Range> range = selection.selection().firstRange()) { | 2051 if (RefPtrWillBeRawPtr<Range> range = selection.selection().firstRange()) { |
| 2052 PlainTextRange plainTextRange(PlainTextRange::create(*node, *range.get()
)); | 2052 PlainTextRange plainTextRange(PlainTextRange::create(*node, *range.get()
)); |
| 2053 if (plainTextRange.isNotNull()) { | 2053 if (plainTextRange.isNotNull()) { |
| 2054 info.selectionStart = plainTextRange.start(); | 2054 info.selectionStart = plainTextRange.start(); |
| 2055 info.selectionEnd = plainTextRange.end(); | 2055 info.selectionEnd = plainTextRange.end(); |
| 2056 } | 2056 } |
| 2057 } | 2057 } |
| 2058 | 2058 |
| 2059 if (RefPtr<Range> range = focused->inputMethodController().compositionRange(
)) { | 2059 if (RefPtrWillBeRawPtr<Range> range = focused->inputMethodController().compo
sitionRange()) { |
| 2060 PlainTextRange plainTextRange(PlainTextRange::create(*node, *range.get()
)); | 2060 PlainTextRange plainTextRange(PlainTextRange::create(*node, *range.get()
)); |
| 2061 if (plainTextRange.isNotNull()) { | 2061 if (plainTextRange.isNotNull()) { |
| 2062 info.compositionStart = plainTextRange.start(); | 2062 info.compositionStart = plainTextRange.start(); |
| 2063 info.compositionEnd = plainTextRange.end(); | 2063 info.compositionEnd = plainTextRange.end(); |
| 2064 } | 2064 } |
| 2065 } | 2065 } |
| 2066 | 2066 |
| 2067 return info; | 2067 return info; |
| 2068 } | 2068 } |
| 2069 | 2069 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2152 bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const | 2152 bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const |
| 2153 { | 2153 { |
| 2154 const LocalFrame* frame = toLocalFrame(focusedWebCoreFrame()); | 2154 const LocalFrame* frame = toLocalFrame(focusedWebCoreFrame()); |
| 2155 if (!frame) | 2155 if (!frame) |
| 2156 return false; | 2156 return false; |
| 2157 FrameSelection& selection = frame->selection(); | 2157 FrameSelection& selection = frame->selection(); |
| 2158 | 2158 |
| 2159 if (selection.isCaret()) { | 2159 if (selection.isCaret()) { |
| 2160 anchor = focus = selection.absoluteCaretBounds(); | 2160 anchor = focus = selection.absoluteCaretBounds(); |
| 2161 } else { | 2161 } else { |
| 2162 RefPtr<Range> selectedRange = selection.toNormalizedRange(); | 2162 RefPtrWillBeRawPtr<Range> selectedRange = selection.toNormalizedRange(); |
| 2163 if (!selectedRange) | 2163 if (!selectedRange) |
| 2164 return false; | 2164 return false; |
| 2165 | 2165 |
| 2166 RefPtr<Range> range(Range::create(selectedRange->startContainer()->docum
ent(), | 2166 RefPtrWillBeRawPtr<Range> range(Range::create(selectedRange->startContai
ner()->document(), |
| 2167 selectedRange->startContainer(), | 2167 selectedRange->startContainer(), |
| 2168 selectedRange->startOffset(), | 2168 selectedRange->startOffset(), |
| 2169 selectedRange->startContainer(), | 2169 selectedRange->startContainer(), |
| 2170 selectedRange->startOffset())); | 2170 selectedRange->startOffset())); |
| 2171 anchor = frame->editor().firstRectForRange(range.get()); | 2171 anchor = frame->editor().firstRectForRange(range.get()); |
| 2172 | 2172 |
| 2173 range = Range::create(selectedRange->endContainer()->document(), | 2173 range = Range::create(selectedRange->endContainer()->document(), |
| 2174 selectedRange->endContainer(), | 2174 selectedRange->endContainer(), |
| 2175 selectedRange->endOffset(), | 2175 selectedRange->endOffset(), |
| 2176 selectedRange->endContainer(), | 2176 selectedRange->endContainer(), |
| (...skipping 1798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3975 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); | 3975 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); |
| 3976 | 3976 |
| 3977 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 3977 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
| 3978 return false; | 3978 return false; |
| 3979 | 3979 |
| 3980 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 3980 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
| 3981 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 3981 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 3982 } | 3982 } |
| 3983 | 3983 |
| 3984 } // namespace blink | 3984 } // namespace blink |
| OLD | NEW |