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

Side by Side Diff: Source/core/html/HTMLBodyElement.cpp

Issue 23819007: Have Node::document() return a reference instead of a pointer (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 3 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/core/html/HTMLBaseElement.cpp ('k') | Source/core/html/HTMLCanvasElement.cpp » ('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) 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, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 if (name == backgroundAttr || name == marginwidthAttr || name == leftmarginA ttr || name == marginheightAttr || name == topmarginAttr || name == bgcolorAttr || name == textAttr || name == bgpropertiesAttr) 67 if (name == backgroundAttr || name == marginwidthAttr || name == leftmarginA ttr || name == marginheightAttr || name == topmarginAttr || name == bgcolorAttr || name == textAttr || name == bgpropertiesAttr)
68 return true; 68 return true;
69 return HTMLElement::isPresentationAttribute(name); 69 return HTMLElement::isPresentationAttribute(name);
70 } 70 }
71 71
72 void HTMLBodyElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style) 72 void HTMLBodyElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style)
73 { 73 {
74 if (name == backgroundAttr) { 74 if (name == backgroundAttr) {
75 String url = stripLeadingAndTrailingHTMLSpaces(value); 75 String url = stripLeadingAndTrailingHTMLSpaces(value);
76 if (!url.isEmpty()) { 76 if (!url.isEmpty()) {
77 RefPtr<CSSImageValue> imageValue = CSSImageValue::create(document()- >completeURL(url).string()); 77 RefPtr<CSSImageValue> imageValue = CSSImageValue::create(document(). completeURL(url).string());
78 imageValue->setInitiator(localName()); 78 imageValue->setInitiator(localName());
79 style->setProperty(CSSProperty(CSSPropertyBackgroundImage, imageValu e.release())); 79 style->setProperty(CSSProperty(CSSPropertyBackgroundImage, imageValu e.release()));
80 } 80 }
81 } else if (name == marginwidthAttr || name == leftmarginAttr) { 81 } else if (name == marginwidthAttr || name == leftmarginAttr) {
82 addHTMLLengthToStyle(style, CSSPropertyMarginRight, value); 82 addHTMLLengthToStyle(style, CSSPropertyMarginRight, value);
83 addHTMLLengthToStyle(style, CSSPropertyMarginLeft, value); 83 addHTMLLengthToStyle(style, CSSPropertyMarginLeft, value);
84 } else if (name == marginheightAttr || name == topmarginAttr) { 84 } else if (name == marginheightAttr || name == topmarginAttr) {
85 addHTMLLengthToStyle(style, CSSPropertyMarginBottom, value); 85 addHTMLLengthToStyle(style, CSSPropertyMarginBottom, value);
86 addHTMLLengthToStyle(style, CSSPropertyMarginTop, value); 86 addHTMLLengthToStyle(style, CSSPropertyMarginTop, value);
87 } else if (name == bgcolorAttr) { 87 } else if (name == bgcolorAttr) {
88 addHTMLColorToStyle(style, CSSPropertyBackgroundColor, value); 88 addHTMLColorToStyle(style, CSSPropertyBackgroundColor, value);
89 } else if (name == textAttr) { 89 } else if (name == textAttr) {
90 addHTMLColorToStyle(style, CSSPropertyColor, value); 90 addHTMLColorToStyle(style, CSSPropertyColor, value);
91 } else if (name == bgpropertiesAttr) { 91 } else if (name == bgpropertiesAttr) {
92 if (equalIgnoringCase(value, "fixed")) 92 if (equalIgnoringCase(value, "fixed"))
93 addPropertyToPresentationAttributeStyle(style, CSSPropertyBackgroundA ttachment, CSSValueFixed); 93 addPropertyToPresentationAttributeStyle(style, CSSPropertyBackgroundA ttachment, CSSValueFixed);
94 } else 94 } else
95 HTMLElement::collectStyleForPresentationAttribute(name, value, style); 95 HTMLElement::collectStyleForPresentationAttribute(name, value, style);
96 } 96 }
97 97
98 void HTMLBodyElement::parseAttribute(const QualifiedName& name, const AtomicStri ng& value) 98 void HTMLBodyElement::parseAttribute(const QualifiedName& name, const AtomicStri ng& value)
99 { 99 {
100 if (name == vlinkAttr || name == alinkAttr || name == linkAttr) { 100 if (name == vlinkAttr || name == alinkAttr || name == linkAttr) {
101 if (value.isNull()) { 101 if (value.isNull()) {
102 if (name == linkAttr) 102 if (name == linkAttr)
103 document()->textLinkColors().resetLinkColor(); 103 document().textLinkColors().resetLinkColor();
104 else if (name == vlinkAttr) 104 else if (name == vlinkAttr)
105 document()->textLinkColors().resetVisitedLinkColor(); 105 document().textLinkColors().resetVisitedLinkColor();
106 else 106 else
107 document()->textLinkColors().resetActiveLinkColor(); 107 document().textLinkColors().resetActiveLinkColor();
108 } else { 108 } else {
109 RGBA32 color; 109 RGBA32 color;
110 if (CSSParser::parseColor(color, value, !document()->inQuirksMode()) ) { 110 if (CSSParser::parseColor(color, value, !document().inQuirksMode())) {
111 if (name == linkAttr) 111 if (name == linkAttr)
112 document()->textLinkColors().setLinkColor(color); 112 document().textLinkColors().setLinkColor(color);
113 else if (name == vlinkAttr) 113 else if (name == vlinkAttr)
114 document()->textLinkColors().setVisitedLinkColor(color); 114 document().textLinkColors().setVisitedLinkColor(color);
115 else 115 else
116 document()->textLinkColors().setActiveLinkColor(color); 116 document().textLinkColors().setActiveLinkColor(color);
117 } 117 }
118 } 118 }
119 119
120 setNeedsStyleRecalc(); 120 setNeedsStyleRecalc();
121 } else if (name == onloadAttr) 121 } else if (name == onloadAttr)
122 document()->setWindowAttributeEventListener(eventNames().loadEvent, crea teAttributeEventListener(document()->frame(), name, value)); 122 document().setWindowAttributeEventListener(eventNames().loadEvent, creat eAttributeEventListener(document().frame(), name, value));
123 else if (name == onbeforeunloadAttr) 123 else if (name == onbeforeunloadAttr)
124 document()->setWindowAttributeEventListener(eventNames().beforeunloadEve nt, createAttributeEventListener(document()->frame(), name, value)); 124 document().setWindowAttributeEventListener(eventNames().beforeunloadEven t, createAttributeEventListener(document().frame(), name, value));
125 else if (name == onunloadAttr) 125 else if (name == onunloadAttr)
126 document()->setWindowAttributeEventListener(eventNames().unloadEvent, cr eateAttributeEventListener(document()->frame(), name, value)); 126 document().setWindowAttributeEventListener(eventNames().unloadEvent, cre ateAttributeEventListener(document().frame(), name, value));
127 else if (name == onpagehideAttr) 127 else if (name == onpagehideAttr)
128 document()->setWindowAttributeEventListener(eventNames().pagehideEvent, createAttributeEventListener(document()->frame(), name, value)); 128 document().setWindowAttributeEventListener(eventNames().pagehideEvent, c reateAttributeEventListener(document().frame(), name, value));
129 else if (name == onpageshowAttr) 129 else if (name == onpageshowAttr)
130 document()->setWindowAttributeEventListener(eventNames().pageshowEvent, createAttributeEventListener(document()->frame(), name, value)); 130 document().setWindowAttributeEventListener(eventNames().pageshowEvent, c reateAttributeEventListener(document().frame(), name, value));
131 else if (name == onpopstateAttr) 131 else if (name == onpopstateAttr)
132 document()->setWindowAttributeEventListener(eventNames().popstateEvent, createAttributeEventListener(document()->frame(), name, value)); 132 document().setWindowAttributeEventListener(eventNames().popstateEvent, c reateAttributeEventListener(document().frame(), name, value));
133 else if (name == onblurAttr) 133 else if (name == onblurAttr)
134 document()->setWindowAttributeEventListener(eventNames().blurEvent, crea teAttributeEventListener(document()->frame(), name, value)); 134 document().setWindowAttributeEventListener(eventNames().blurEvent, creat eAttributeEventListener(document().frame(), name, value));
135 else if (name == onfocusAttr) 135 else if (name == onfocusAttr)
136 document()->setWindowAttributeEventListener(eventNames().focusEvent, cre ateAttributeEventListener(document()->frame(), name, value)); 136 document().setWindowAttributeEventListener(eventNames().focusEvent, crea teAttributeEventListener(document().frame(), name, value));
137 #if ENABLE(ORIENTATION_EVENTS) 137 #if ENABLE(ORIENTATION_EVENTS)
138 else if (name == onorientationchangeAttr) 138 else if (name == onorientationchangeAttr)
139 document()->setWindowAttributeEventListener(eventNames().orientationchan geEvent, createAttributeEventListener(document()->frame(), name, value)); 139 document().setWindowAttributeEventListener(eventNames().orientationchang eEvent, createAttributeEventListener(document().frame(), name, value));
140 #endif 140 #endif
141 else if (name == onhashchangeAttr) 141 else if (name == onhashchangeAttr)
142 document()->setWindowAttributeEventListener(eventNames().hashchangeEvent , createAttributeEventListener(document()->frame(), name, value)); 142 document().setWindowAttributeEventListener(eventNames().hashchangeEvent, createAttributeEventListener(document().frame(), name, value));
143 else if (name == onresizeAttr) 143 else if (name == onresizeAttr)
144 document()->setWindowAttributeEventListener(eventNames().resizeEvent, cr eateAttributeEventListener(document()->frame(), name, value)); 144 document().setWindowAttributeEventListener(eventNames().resizeEvent, cre ateAttributeEventListener(document().frame(), name, value));
145 else if (name == onscrollAttr) 145 else if (name == onscrollAttr)
146 document()->setWindowAttributeEventListener(eventNames().scrollEvent, cr eateAttributeEventListener(document()->frame(), name, value)); 146 document().setWindowAttributeEventListener(eventNames().scrollEvent, cre ateAttributeEventListener(document().frame(), name, value));
147 else if (name == onselectionchangeAttr) 147 else if (name == onselectionchangeAttr)
148 document()->setAttributeEventListener(eventNames().selectionchangeEvent, createAttributeEventListener(document()->frame(), name, value)); 148 document().setAttributeEventListener(eventNames().selectionchangeEvent, createAttributeEventListener(document().frame(), name, value));
149 else if (name == onstorageAttr) 149 else if (name == onstorageAttr)
150 document()->setWindowAttributeEventListener(eventNames().storageEvent, c reateAttributeEventListener(document()->frame(), name, value)); 150 document().setWindowAttributeEventListener(eventNames().storageEvent, cr eateAttributeEventListener(document().frame(), name, value));
151 else if (name == ononlineAttr) 151 else if (name == ononlineAttr)
152 document()->setWindowAttributeEventListener(eventNames().onlineEvent, cr eateAttributeEventListener(document()->frame(), name, value)); 152 document().setWindowAttributeEventListener(eventNames().onlineEvent, cre ateAttributeEventListener(document().frame(), name, value));
153 else if (name == onofflineAttr) 153 else if (name == onofflineAttr)
154 document()->setWindowAttributeEventListener(eventNames().offlineEvent, c reateAttributeEventListener(document()->frame(), name, value)); 154 document().setWindowAttributeEventListener(eventNames().offlineEvent, cr eateAttributeEventListener(document().frame(), name, value));
155 else 155 else
156 HTMLElement::parseAttribute(name, value); 156 HTMLElement::parseAttribute(name, value);
157 } 157 }
158 158
159 Node::InsertionNotificationRequest HTMLBodyElement::insertedInto(ContainerNode* insertionPoint) 159 Node::InsertionNotificationRequest HTMLBodyElement::insertedInto(ContainerNode* insertionPoint)
160 { 160 {
161 HTMLElement::insertedInto(insertionPoint); 161 HTMLElement::insertedInto(insertionPoint);
162 if (insertionPoint->inDocument()) { 162 if (insertionPoint->inDocument()) {
163 // FIXME: It's surprising this is web compatible since it means a margin width 163 // FIXME: It's surprising this is web compatible since it means a margin width
164 // and marginheight attribute can magically appear on the <body> of all documents 164 // and marginheight attribute can magically appear on the <body> of all documents
165 // embedded through <iframe> or <frame>. 165 // embedded through <iframe> or <frame>.
166 Element* ownerElement = document()->ownerElement(); 166 Element* ownerElement = document().ownerElement();
167 if (ownerElement && ownerElement->isFrameElementBase()) { 167 if (ownerElement && ownerElement->isFrameElementBase()) {
168 HTMLFrameElementBase* ownerFrameElement = toHTMLFrameElementBase(own erElement); 168 HTMLFrameElementBase* ownerFrameElement = toHTMLFrameElementBase(own erElement);
169 int marginWidth = ownerFrameElement->marginWidth(); 169 int marginWidth = ownerFrameElement->marginWidth();
170 if (marginWidth != -1) 170 if (marginWidth != -1)
171 setAttribute(marginwidthAttr, String::number(marginWidth)); 171 setAttribute(marginwidthAttr, String::number(marginWidth));
172 int marginHeight = ownerFrameElement->marginHeight(); 172 int marginHeight = ownerFrameElement->marginHeight();
173 if (marginHeight != -1) 173 if (marginHeight != -1)
174 setAttribute(marginheightAttr, String::number(marginHeight)); 174 setAttribute(marginheightAttr, String::number(marginHeight));
175 } 175 }
176 } 176 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 return value; 247 return value;
248 // Needed because of truncation (rather than rounding) when scaling up. 248 // Needed because of truncation (rather than rounding) when scaling up.
249 if (zoomFactor > 1) 249 if (zoomFactor > 1)
250 value++; 250 value++;
251 return static_cast<int>(value / zoomFactor); 251 return static_cast<int>(value / zoomFactor);
252 } 252 }
253 253
254 int HTMLBodyElement::scrollLeft() 254 int HTMLBodyElement::scrollLeft()
255 { 255 {
256 // Update the document's layout. 256 // Update the document's layout.
257 Document* document = this->document(); 257 Document& document = this->document();
258 document->updateLayoutIgnorePendingStylesheets(); 258 document.updateLayoutIgnorePendingStylesheets();
259 FrameView* view = document->view(); 259 FrameView* view = document.view();
260 return view ? adjustForZoom(view->scrollX(), document) : 0; 260 return view ? adjustForZoom(view->scrollX(), &document) : 0;
261 } 261 }
262 262
263 void HTMLBodyElement::setScrollLeft(int scrollLeft) 263 void HTMLBodyElement::setScrollLeft(int scrollLeft)
264 { 264 {
265 Document* document = this->document(); 265 Document& document = this->document();
266 document->updateLayoutIgnorePendingStylesheets(); 266 document.updateLayoutIgnorePendingStylesheets();
267 Frame* frame = document->frame(); 267 Frame* frame = document.frame();
268 if (!frame) 268 if (!frame)
269 return; 269 return;
270 FrameView* view = frame->view(); 270 FrameView* view = frame->view();
271 if (!view) 271 if (!view)
272 return; 272 return;
273 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZo omFactor()), view->scrollY())); 273 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZo omFactor()), view->scrollY()));
274 } 274 }
275 275
276 int HTMLBodyElement::scrollTop() 276 int HTMLBodyElement::scrollTop()
277 { 277 {
278 // Update the document's layout. 278 // Update the document's layout.
279 Document* document = this->document(); 279 Document& document = this->document();
280 document->updateLayoutIgnorePendingStylesheets(); 280 document.updateLayoutIgnorePendingStylesheets();
281 FrameView* view = document->view(); 281 FrameView* view = document.view();
282 return view ? adjustForZoom(view->scrollY(), document) : 0; 282 return view ? adjustForZoom(view->scrollY(), &document) : 0;
283 } 283 }
284 284
285 void HTMLBodyElement::setScrollTop(int scrollTop) 285 void HTMLBodyElement::setScrollTop(int scrollTop)
286 { 286 {
287 Document* document = this->document(); 287 Document& document = this->document();
288 document->updateLayoutIgnorePendingStylesheets(); 288 document.updateLayoutIgnorePendingStylesheets();
289 Frame* frame = document->frame(); 289 Frame* frame = document.frame();
290 if (!frame) 290 if (!frame)
291 return; 291 return;
292 FrameView* view = frame->view(); 292 FrameView* view = frame->view();
293 if (!view) 293 if (!view)
294 return; 294 return;
295 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * frame->pageZoomFactor()))); 295 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * frame->pageZoomFactor())));
296 } 296 }
297 297
298 int HTMLBodyElement::scrollHeight() 298 int HTMLBodyElement::scrollHeight()
299 { 299 {
300 // Update the document's layout. 300 // Update the document's layout.
301 Document* document = this->document(); 301 Document& document = this->document();
302 document->updateLayoutIgnorePendingStylesheets(); 302 document.updateLayoutIgnorePendingStylesheets();
303 FrameView* view = document->view(); 303 FrameView* view = document.view();
304 return view ? adjustForZoom(view->contentsHeight(), document) : 0; 304 return view ? adjustForZoom(view->contentsHeight(), &document) : 0;
305 } 305 }
306 306
307 int HTMLBodyElement::scrollWidth() 307 int HTMLBodyElement::scrollWidth()
308 { 308 {
309 // Update the document's layout. 309 // Update the document's layout.
310 Document* document = this->document(); 310 Document& document = this->document();
311 document->updateLayoutIgnorePendingStylesheets(); 311 document.updateLayoutIgnorePendingStylesheets();
312 FrameView* view = document->view(); 312 FrameView* view = document.view();
313 return view ? adjustForZoom(view->contentsWidth(), document) : 0; 313 return view ? adjustForZoom(view->contentsWidth(), &document) : 0;
314 } 314 }
315 315
316 void HTMLBodyElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) const 316 void HTMLBodyElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) const
317 { 317 {
318 HTMLElement::addSubresourceAttributeURLs(urls); 318 HTMLElement::addSubresourceAttributeURLs(urls);
319 319
320 addSubresourceURL(urls, document()->completeURL(getAttribute(backgroundAttr) )); 320 addSubresourceURL(urls, document().completeURL(getAttribute(backgroundAttr)) );
321 } 321 }
322 322
323 } // namespace WebCore 323 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/HTMLBaseElement.cpp ('k') | Source/core/html/HTMLCanvasElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698