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

Side by Side Diff: Source/web/WebViewImpl.cpp

Issue 200723002: Use new is*Element() helper functions more in web/ code (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Use same assertion as in operator->() Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « Source/web/WebSearchableFormData.cpp ('k') | public/platform/WebPrivatePtr.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 Element* root = frame->selection().rootEditableElementOrDocumentElement(); 850 Element* root = frame->selection().rootEditableElementOrDocumentElement();
851 if (!root) 851 if (!root)
852 return; 852 return;
853 853
854 // If the selection is inside a form control, the root will be a <div> that 854 // If the selection is inside a form control, the root will be a <div> that
855 // behaves as the editor but we want to return the actual element's bounds. 855 // behaves as the editor but we want to return the actual element's bounds.
856 // In practice, that means <textarea> and <input> controls that behave like 856 // In practice, that means <textarea> and <input> controls that behave like
857 // a text field. 857 // a text field.
858 Element* shadowHost = root->shadowHost(); 858 Element* shadowHost = root->shadowHost();
859 if (shadowHost 859 if (shadowHost
860 && (shadowHost->hasTagName(HTMLNames::textareaTag) 860 && (isHTMLTextAreaElement(*shadowHost)
861 || (shadowHost->hasTagName(HTMLNames::inputTag) 861 || (isHTMLInputElement(*shadowHost)
862 && toHTMLInputElement(shadowHost)->isText()))) 862 && toHTMLInputElement(*shadowHost).isText())))
863 root = shadowHost; 863 root = shadowHost;
864 864
865 IntRect boundingBox = root->pixelSnappedBoundingBox(); 865 IntRect boundingBox = root->pixelSnappedBoundingBox();
866 boundingBox = root->document().frame()->view()->contentsToWindow(boundingBox ); 866 boundingBox = root->document().frame()->view()->contentsToWindow(boundingBox );
867 boundingBox.scale(pageScaleFactor()); 867 boundingBox.scale(pageScaleFactor());
868 bounds = boundingBox; 868 bounds = boundingBox;
869 } 869 }
870 870
871 bool WebViewImpl::handleKeyEvent(const WebKeyboardEvent& event) 871 bool WebViewImpl::handleKeyEvent(const WebKeyboardEvent& event)
872 { 872 {
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after
2051 2051
2052 return info; 2052 return info;
2053 } 2053 }
2054 2054
2055 WebTextInputType WebViewImpl::textInputType() 2055 WebTextInputType WebViewImpl::textInputType()
2056 { 2056 {
2057 Element* element = focusedElement(); 2057 Element* element = focusedElement();
2058 if (!element) 2058 if (!element)
2059 return WebTextInputTypeNone; 2059 return WebTextInputTypeNone;
2060 2060
2061 if (element->hasTagName(HTMLNames::inputTag)) { 2061 if (isHTMLInputElement(*element)) {
2062 HTMLInputElement* input = toHTMLInputElement(element); 2062 HTMLInputElement& input = toHTMLInputElement(*element);
2063 2063
2064 if (input->isDisabledOrReadOnly()) 2064 if (input.isDisabledOrReadOnly())
2065 return WebTextInputTypeNone; 2065 return WebTextInputTypeNone;
2066 2066
2067 if (input->isPasswordField()) 2067 if (input.isPasswordField())
2068 return WebTextInputTypePassword; 2068 return WebTextInputTypePassword;
2069 if (input->isSearchField()) 2069 if (input.isSearchField())
2070 return WebTextInputTypeSearch; 2070 return WebTextInputTypeSearch;
2071 if (input->isEmailField()) 2071 if (input.isEmailField())
2072 return WebTextInputTypeEmail; 2072 return WebTextInputTypeEmail;
2073 if (input->isNumberField()) 2073 if (input.isNumberField())
2074 return WebTextInputTypeNumber; 2074 return WebTextInputTypeNumber;
2075 if (input->isTelephoneField()) 2075 if (input.isTelephoneField())
2076 return WebTextInputTypeTelephone; 2076 return WebTextInputTypeTelephone;
2077 if (input->isURLField()) 2077 if (input.isURLField())
2078 return WebTextInputTypeURL; 2078 return WebTextInputTypeURL;
2079 if (input->isDateField()) 2079 if (input.isDateField())
2080 return WebTextInputTypeDate; 2080 return WebTextInputTypeDate;
2081 if (input->isDateTimeLocalField()) 2081 if (input.isDateTimeLocalField())
2082 return WebTextInputTypeDateTimeLocal; 2082 return WebTextInputTypeDateTimeLocal;
2083 if (input->isMonthField()) 2083 if (input.isMonthField())
2084 return WebTextInputTypeMonth; 2084 return WebTextInputTypeMonth;
2085 if (input->isTimeField()) 2085 if (input.isTimeField())
2086 return WebTextInputTypeTime; 2086 return WebTextInputTypeTime;
2087 if (input->isWeekField()) 2087 if (input.isWeekField())
2088 return WebTextInputTypeWeek; 2088 return WebTextInputTypeWeek;
2089 if (input->isTextField()) 2089 if (input.isTextField())
2090 return WebTextInputTypeText; 2090 return WebTextInputTypeText;
2091 2091
2092 return WebTextInputTypeNone; 2092 return WebTextInputTypeNone;
2093 } 2093 }
2094 2094
2095 if (element->hasTagName(HTMLNames::textareaTag)) { 2095 if (isHTMLTextAreaElement(*element)) {
2096 if (toHTMLTextAreaElement(element)->isDisabledOrReadOnly()) 2096 if (toHTMLTextAreaElement(*element).isDisabledOrReadOnly())
2097 return WebTextInputTypeNone; 2097 return WebTextInputTypeNone;
2098 return WebTextInputTypeTextArea; 2098 return WebTextInputTypeTextArea;
2099 } 2099 }
2100 2100
2101 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI) 2101 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
2102 if (element->isHTMLElement()) { 2102 if (element->isHTMLElement()) {
2103 if (toHTMLElement(element)->isDateTimeFieldElement()) 2103 if (toHTMLElement(element)->isDateTimeFieldElement())
2104 return WebTextInputTypeDateTimeField; 2104 return WebTextInputTypeDateTimeField;
2105 } 2105 }
2106 #endif 2106 #endif
2107 2107
2108 if (element->shouldUseInputMethod()) 2108 if (element->shouldUseInputMethod())
2109 return WebTextInputTypeContentEditable; 2109 return WebTextInputTypeContentEditable;
2110 2110
2111 return WebTextInputTypeNone; 2111 return WebTextInputTypeNone;
2112 } 2112 }
2113 2113
2114 WebString WebViewImpl::inputModeOfFocusedElement() 2114 WebString WebViewImpl::inputModeOfFocusedElement()
2115 { 2115 {
2116 if (!RuntimeEnabledFeatures::inputModeAttributeEnabled()) 2116 if (!RuntimeEnabledFeatures::inputModeAttributeEnabled())
2117 return WebString(); 2117 return WebString();
2118 2118
2119 Element* element = focusedElement(); 2119 Element* element = focusedElement();
2120 if (!element) 2120 if (!element)
2121 return WebString(); 2121 return WebString();
2122 2122
2123 if (element->hasTagName(HTMLNames::inputTag)) { 2123 if (isHTMLInputElement(*element)) {
2124 const HTMLInputElement* input = toHTMLInputElement(element); 2124 const HTMLInputElement& input = toHTMLInputElement(*element);
2125 if (input->supportsInputModeAttribute()) 2125 if (input.supportsInputModeAttribute())
2126 return input->fastGetAttribute(HTMLNames::inputmodeAttr).lower(); 2126 return input.fastGetAttribute(HTMLNames::inputmodeAttr).lower();
2127 return WebString(); 2127 return WebString();
2128 } 2128 }
2129 if (element->hasTagName(HTMLNames::textareaTag)) { 2129 if (isHTMLTextAreaElement(*element)) {
2130 const HTMLTextAreaElement* textarea = toHTMLTextAreaElement(element); 2130 const HTMLTextAreaElement& textarea = toHTMLTextAreaElement(*element);
2131 return textarea->fastGetAttribute(HTMLNames::inputmodeAttr).lower(); 2131 return textarea.fastGetAttribute(HTMLNames::inputmodeAttr).lower();
2132 } 2132 }
2133 2133
2134 return WebString(); 2134 return WebString();
2135 } 2135 }
2136 2136
2137 bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const 2137 bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const
2138 { 2138 {
2139 const LocalFrame* frame = focusedWebCoreFrame(); 2139 const LocalFrame* frame = focusedWebCoreFrame();
2140 if (!frame) 2140 if (!frame)
2141 return false; 2141 return false;
(...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after
2984 view->setLayoutSize(layoutSize); 2984 view->setLayoutSize(layoutSize);
2985 else 2985 else
2986 updateMainFrameLayoutSize(); 2986 updateMainFrameLayoutSize();
2987 } 2987 }
2988 2988
2989 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, 2989 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action,
2990 const WebPoint& location) 2990 const WebPoint& location)
2991 { 2991 {
2992 HitTestResult result = hitTestResultForWindowPos(location); 2992 HitTestResult result = hitTestResultForWindowPos(location);
2993 RefPtr<Node> node = result.innerNonSharedNode(); 2993 RefPtr<Node> node = result.innerNonSharedNode();
2994 if (!node->hasTagName(HTMLNames::videoTag) && !node->hasTagName(HTMLNames::a udioTag)) 2994 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node))
2995 return; 2995 return;
2996 2996
2997 RefPtr<HTMLMediaElement> mediaElement = 2997 RefPtr<HTMLMediaElement> mediaElement =
2998 static_pointer_cast<HTMLMediaElement>(node); 2998 static_pointer_cast<HTMLMediaElement>(node);
2999 switch (action.type) { 2999 switch (action.type) {
3000 case WebMediaPlayerAction::Play: 3000 case WebMediaPlayerAction::Play:
3001 if (action.enable) 3001 if (action.enable)
3002 mediaElement->play(); 3002 mediaElement->play();
3003 else 3003 else
3004 mediaElement->pause(); 3004 mediaElement->pause();
(...skipping 10 matching lines...) Expand all
3015 default: 3015 default:
3016 ASSERT_NOT_REACHED(); 3016 ASSERT_NOT_REACHED();
3017 } 3017 }
3018 } 3018 }
3019 3019
3020 void WebViewImpl::performPluginAction(const WebPluginAction& action, 3020 void WebViewImpl::performPluginAction(const WebPluginAction& action,
3021 const WebPoint& location) 3021 const WebPoint& location)
3022 { 3022 {
3023 HitTestResult result = hitTestResultForWindowPos(location); 3023 HitTestResult result = hitTestResultForWindowPos(location);
3024 RefPtr<Node> node = result.innerNonSharedNode(); 3024 RefPtr<Node> node = result.innerNonSharedNode();
3025 if (!node->hasTagName(HTMLNames::objectTag) && !node->hasTagName(HTMLNames:: embedTag)) 3025 if (!isHTMLObjectElement(*node) && !isHTMLEmbedElement(*node))
3026 return; 3026 return;
3027 3027
3028 RenderObject* object = node->renderer(); 3028 RenderObject* object = node->renderer();
3029 if (object && object->isWidget()) { 3029 if (object && object->isWidget()) {
3030 Widget* widget = toRenderWidget(object)->widget(); 3030 Widget* widget = toRenderWidget(object)->widget();
3031 if (widget && widget->isPluginContainer()) { 3031 if (widget && widget->isPluginContainer()) {
3032 WebPluginContainerImpl* plugin = toWebPluginContainerImpl(widget); 3032 WebPluginContainerImpl* plugin = toWebPluginContainerImpl(widget);
3033 switch (action.type) { 3033 switch (action.type) {
3034 case WebPluginAction::Rotate90Clockwise: 3034 case WebPluginAction::Rotate90Clockwise:
3035 plugin->plugin()->rotateView(WebPlugin::RotationType90Clockwise) ; 3035 plugin->plugin()->rotateView(WebPlugin::RotationType90Clockwise) ;
(...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after
3910 3910
3911 if (touchHit.isContentEditable()) 3911 if (touchHit.isContentEditable())
3912 return false; 3912 return false;
3913 3913
3914 Node* node = touchHit.innerNode(); 3914 Node* node = touchHit.innerNode();
3915 if (!node || !node->isTextNode()) 3915 if (!node || !node->isTextNode())
3916 return false; 3916 return false;
3917 3917
3918 // Ignore when tapping on links or nodes listening to click events, unless t he click event is on the 3918 // Ignore when tapping on links or nodes listening to click events, unless t he click event is on the
3919 // body element, in which case it's unlikely that the original node itself w as intended to be clickable. 3919 // body element, in which case it's unlikely that the original node itself w as intended to be clickable.
3920 for (; node && !node->hasTagName(HTMLNames::bodyTag); node = node->parentNod e()) { 3920 for (; node && !isHTMLBodyElement(*node); node = node->parentNode()) {
3921 if (node->isLink() || node->willRespondToTouchEvents() || node->willResp ondToMouseClickEvents()) 3921 if (node->isLink() || node->willRespondToTouchEvents() || node->willResp ondToMouseClickEvents())
3922 return false; 3922 return false;
3923 } 3923 }
3924 3924
3925 WebContentDetectionResult content = m_client->detectContentAround(touchHit); 3925 WebContentDetectionResult content = m_client->detectContentAround(touchHit);
3926 if (!content.isValid()) 3926 if (!content.isValid())
3927 return false; 3927 return false;
3928 3928
3929 m_client->scheduleContentIntent(content.intent()); 3929 m_client->scheduleContentIntent(content.intent());
3930 return true; 3930 return true;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3998 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi nedConstraints(); 3998 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi nedConstraints();
3999 3999
4000 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) 4000 if (!mainFrameImpl() || !mainFrameImpl()->frameView())
4001 return false; 4001 return false;
4002 4002
4003 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width 4003 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width
4004 || (constraints.minimumScale == constraints.maximumScale && constraints. minimumScale != -1); 4004 || (constraints.minimumScale == constraints.maximumScale && constraints. minimumScale != -1);
4005 } 4005 }
4006 4006
4007 } // namespace blink 4007 } // namespace blink
OLDNEW
« no previous file with comments | « Source/web/WebSearchableFormData.cpp ('k') | public/platform/WebPrivatePtr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698