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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLFrameElementBase.cpp

Issue 1307013004: Propagate scrolling/marginwidth/marginheight property values to child frame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: content_unittests compile fix Created 5 years, 1 month 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 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Simon Hausmann (hausmann@kde.org) 4 * (C) 2000 Simon Hausmann (hausmann@kde.org)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 18 matching lines...) Expand all
29 #include "core/HTMLNames.h" 29 #include "core/HTMLNames.h"
30 #include "core/dom/Attribute.h" 30 #include "core/dom/Attribute.h"
31 #include "core/dom/Document.h" 31 #include "core/dom/Document.h"
32 #include "core/frame/FrameView.h" 32 #include "core/frame/FrameView.h"
33 #include "core/frame/LocalFrame.h" 33 #include "core/frame/LocalFrame.h"
34 #include "core/frame/RemoteFrame.h" 34 #include "core/frame/RemoteFrame.h"
35 #include "core/frame/RemoteFrameView.h" 35 #include "core/frame/RemoteFrameView.h"
36 #include "core/html/parser/HTMLParserIdioms.h" 36 #include "core/html/parser/HTMLParserIdioms.h"
37 #include "core/layout/LayoutPart.h" 37 #include "core/layout/LayoutPart.h"
38 #include "core/loader/FrameLoader.h" 38 #include "core/loader/FrameLoader.h"
39 #include "core/loader/FrameLoaderClient.h"
39 #include "core/page/FocusController.h" 40 #include "core/page/FocusController.h"
40 #include "core/page/Page.h" 41 #include "core/page/Page.h"
41 42
42 namespace blink { 43 namespace blink {
43 44
44 using namespace HTMLNames; 45 using namespace HTMLNames;
45 46
46 HTMLFrameElementBase::HTMLFrameElementBase(const QualifiedName& tagName, Documen t& document) 47 HTMLFrameElementBase::HTMLFrameElementBase(const QualifiedName& tagName, Documen t& document)
47 : HTMLFrameOwnerElement(tagName, document) 48 : HTMLFrameOwnerElement(tagName, document)
48 , m_scrolling(ScrollbarAuto) 49 , m_scrollingMode(ScrollbarAuto)
49 , m_marginWidth(-1) 50 , m_marginWidth(-1)
50 , m_marginHeight(-1) 51 , m_marginHeight(-1)
51 { 52 {
52 } 53 }
53 54
54 bool HTMLFrameElementBase::isURLAllowed() const 55 bool HTMLFrameElementBase::isURLAllowed() const
55 { 56 {
56 if (m_URL.isEmpty()) 57 if (m_URL.isEmpty())
57 return true; 58 return true;
58 59
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 url = blankURL(); 92 url = blankURL();
92 } 93 }
93 94
94 if (!loadOrRedirectSubframe(url, m_frameName, replaceCurrentItem)) 95 if (!loadOrRedirectSubframe(url, m_frameName, replaceCurrentItem))
95 return; 96 return;
96 if (!contentFrame() || scriptURL.isEmpty() || !contentFrame()->isLocalFrame( )) 97 if (!contentFrame() || scriptURL.isEmpty() || !contentFrame()->isLocalFrame( ))
97 return; 98 return;
98 toLocalFrame(contentFrame())->script().executeScriptIfJavaScriptURL(scriptUR L); 99 toLocalFrame(contentFrame())->script().executeScriptIfJavaScriptURL(scriptUR L);
99 } 100 }
100 101
102 void HTMLFrameElementBase::frameOwnerPropertiesChanged()
103 {
104 // Don't notify about updates if contentFrame() is null, for example when
105 // the subframe hasn't been created yet.
106 if (contentFrame())
107 document().frame()->loader().client()->didChangeFrameOwnerProperties(thi s);
108 }
109
101 void HTMLFrameElementBase::parseAttribute(const QualifiedName& name, const Atomi cString& value) 110 void HTMLFrameElementBase::parseAttribute(const QualifiedName& name, const Atomi cString& value)
102 { 111 {
103 if (name == srcdocAttr) { 112 if (name == srcdocAttr) {
104 if (!value.isNull()) { 113 if (!value.isNull()) {
105 setLocation("about:srcdoc"); 114 setLocation("about:srcdoc");
106 } else { 115 } else {
107 const AtomicString& srcValue = fastGetAttribute(srcAttr); 116 const AtomicString& srcValue = fastGetAttribute(srcAttr);
108 if (!srcValue.isNull()) 117 if (!srcValue.isNull())
109 setLocation(stripLeadingAndTrailingHTMLSpaces(srcValue)); 118 setLocation(stripLeadingAndTrailingHTMLSpaces(srcValue));
110 } 119 }
111 } else if (name == srcAttr && !fastHasAttribute(srcdocAttr)) { 120 } else if (name == srcAttr && !fastHasAttribute(srcdocAttr)) {
112 setLocation(stripLeadingAndTrailingHTMLSpaces(value)); 121 setLocation(stripLeadingAndTrailingHTMLSpaces(value));
113 } else if (name == idAttr) { 122 } else if (name == idAttr) {
114 // Important to call through to base for the id attribute so the hasID b it gets set. 123 // Important to call through to base for the id attribute so the hasID b it gets set.
115 HTMLFrameOwnerElement::parseAttribute(name, value); 124 HTMLFrameOwnerElement::parseAttribute(name, value);
116 m_frameName = value; 125 m_frameName = value;
117 } else if (name == nameAttr) { 126 } else if (name == nameAttr) {
118 m_frameName = value; 127 m_frameName = value;
119 // FIXME: If we are already attached, this doesn't actually change the f rame's name. 128 // FIXME: If we are already attached, this doesn't actually change the f rame's name.
120 // FIXME: If we are already attached, this doesn't check for frame name 129 // FIXME: If we are already attached, this doesn't check for frame name
121 // conflicts and generate a unique frame name. 130 // conflicts and generate a unique frame name.
122 } else if (name == marginwidthAttr) { 131 } else if (name == marginwidthAttr) {
123 m_marginWidth = value.toInt(); 132 setMarginWidth(value.toInt());
124 // FIXME: If we are already attached, this has no effect. 133 // FIXME: If we are already attached, this has no effect.
125 } else if (name == marginheightAttr) { 134 } else if (name == marginheightAttr) {
126 m_marginHeight = value.toInt(); 135 setMarginHeight(value.toInt());
127 // FIXME: If we are already attached, this has no effect. 136 // FIXME: If we are already attached, this has no effect.
128 } else if (name == scrollingAttr) { 137 } else if (name == scrollingAttr) {
129 // Auto and yes both simply mean "allow scrolling." No means "don't allo w scrolling." 138 // Auto and yes both simply mean "allow scrolling." No means "don't allo w scrolling."
130 if (equalIgnoringCase(value, "auto") || equalIgnoringCase(value, "yes")) 139 if (equalIgnoringCase(value, "auto") || equalIgnoringCase(value, "yes"))
131 m_scrolling = ScrollbarAuto; 140 setScrollingMode(ScrollbarAuto);
132 else if (equalIgnoringCase(value, "no")) 141 else if (equalIgnoringCase(value, "no"))
133 m_scrolling = ScrollbarAlwaysOff; 142 setScrollingMode(ScrollbarAlwaysOff);
134 // FIXME: If we are already attached, this has no effect. 143 // FIXME: If we are already attached, this has no effect.
135 } else if (name == onbeforeunloadAttr) { 144 } else if (name == onbeforeunloadAttr) {
136 // FIXME: should <frame> elements have beforeunload handlers? 145 // FIXME: should <frame> elements have beforeunload handlers?
137 setAttributeEventListener(EventTypeNames::beforeunload, createAttributeE ventListener(this, name, value, eventParameterName())); 146 setAttributeEventListener(EventTypeNames::beforeunload, createAttributeE ventListener(this, name, value, eventParameterName()));
138 } else { 147 } else {
139 HTMLFrameOwnerElement::parseAttribute(name, value); 148 HTMLFrameOwnerElement::parseAttribute(name, value);
140 } 149 }
141 } 150 }
142 151
143 void HTMLFrameElementBase::setNameAndOpenURL() 152 void HTMLFrameElementBase::setNameAndOpenURL()
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 // process. See http://crbug.com/339659. 230 // process. See http://crbug.com/339659.
222 void HTMLFrameElementBase::defaultEventHandler(Event* event) 231 void HTMLFrameElementBase::defaultEventHandler(Event* event)
223 { 232 {
224 if (contentFrame() && contentFrame()->isRemoteFrame()) { 233 if (contentFrame() && contentFrame()->isRemoteFrame()) {
225 toRemoteFrame(contentFrame())->forwardInputEvent(event); 234 toRemoteFrame(contentFrame())->forwardInputEvent(event);
226 return; 235 return;
227 } 236 }
228 HTMLFrameOwnerElement::defaultEventHandler(event); 237 HTMLFrameOwnerElement::defaultEventHandler(event);
229 } 238 }
230 239
240 void HTMLFrameElementBase::setScrollingMode(ScrollbarMode scrollbarMode)
241 {
242 m_scrollingMode = scrollbarMode;
243 frameOwnerPropertiesChanged();
244 }
245
246 void HTMLFrameElementBase::setMarginWidth(int marginWidth)
247 {
248 m_marginWidth = marginWidth;
249 frameOwnerPropertiesChanged();
250 }
251
252 void HTMLFrameElementBase::setMarginHeight(int marginHeight)
253 {
254 m_marginHeight = marginHeight;
255 frameOwnerPropertiesChanged();
256 }
257
231 } // namespace blink 258 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698