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

Side by Side Diff: Source/core/dom/TreeScope.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/dom/Text.cpp ('k') | Source/core/dom/shadow/ElementShadow.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) 2011 Google Inc. All Rights Reserved. 2 * Copyright (C) 2011 Google Inc. All Rights Reserved.
3 * Copyright (C) 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2012 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 } 202 }
203 203
204 HTMLMapElement* TreeScope::getImageMap(const String& url) const 204 HTMLMapElement* TreeScope::getImageMap(const String& url) const
205 { 205 {
206 if (url.isNull()) 206 if (url.isNull())
207 return 0; 207 return 0;
208 if (!m_imageMapsByName) 208 if (!m_imageMapsByName)
209 return 0; 209 return 0;
210 size_t hashPos = url.find('#'); 210 size_t hashPos = url.find('#');
211 String name = (hashPos == notFound ? url : url.substring(hashPos + 1)).impl( ); 211 String name = (hashPos == notFound ? url : url.substring(hashPos + 1)).impl( );
212 if (rootNode()->document()->isHTMLDocument()) 212 if (rootNode()->document().isHTMLDocument())
213 return toHTMLMapElement(m_imageMapsByName->getElementByLowercasedMapName (AtomicString(name.lower()).impl(), this)); 213 return toHTMLMapElement(m_imageMapsByName->getElementByLowercasedMapName (AtomicString(name.lower()).impl(), this));
214 return toHTMLMapElement(m_imageMapsByName->getElementByMapName(AtomicString( name).impl(), this)); 214 return toHTMLMapElement(m_imageMapsByName->getElementByMapName(AtomicString( name).impl(), this));
215 } 215 }
216 216
217 Node* nodeFromPoint(Document* document, int x, int y, LayoutPoint* localPoint) 217 Node* nodeFromPoint(Document* document, int x, int y, LayoutPoint* localPoint)
218 { 218 {
219 Frame* frame = document->frame(); 219 Frame* frame = document->frame();
220 220
221 if (!frame) 221 if (!frame)
222 return 0; 222 return 0;
(...skipping 12 matching lines...) Expand all
235 document->renderView()->hitTest(request, result); 235 document->renderView()->hitTest(request, result);
236 236
237 if (localPoint) 237 if (localPoint)
238 *localPoint = result.localPoint(); 238 *localPoint = result.localPoint();
239 239
240 return result.innerNode(); 240 return result.innerNode();
241 } 241 }
242 242
243 Element* TreeScope::elementFromPoint(int x, int y) const 243 Element* TreeScope::elementFromPoint(int x, int y) const
244 { 244 {
245 Node* node = nodeFromPoint(rootNode()->document(), x, y); 245 Node* node = nodeFromPoint(&rootNode()->document(), x, y);
246 if (node && node->isTextNode()) 246 if (node && node->isTextNode())
247 node = node->parentNode(); 247 node = node->parentNode();
248 ASSERT(!node || node->isElementNode() || node->isShadowRoot()); 248 ASSERT(!node || node->isElementNode() || node->isShadowRoot());
249 node = ancestorInThisScope(node); 249 node = ancestorInThisScope(node);
250 if (!node || !node->isElementNode()) 250 if (!node || !node->isElementNode())
251 return 0; 251 return 0;
252 return toElement(node); 252 return toElement(node);
253 } 253 }
254 254
255 void TreeScope::addLabel(const AtomicString& forAttributeValue, HTMLLabelElement * element) 255 void TreeScope::addLabel(const AtomicString& forAttributeValue, HTMLLabelElement * element)
(...skipping 24 matching lines...) Expand all
280 addLabel(forValue, label); 280 addLabel(forValue, label);
281 } 281 }
282 } 282 }
283 } 283 }
284 284
285 return toHTMLLabelElement(m_labelsByForAttribute->getElementByLabelForAttrib ute(forAttributeValue.impl(), this)); 285 return toHTMLLabelElement(m_labelsByForAttribute->getElementByLabelForAttrib ute(forAttributeValue.impl(), this));
286 } 286 }
287 287
288 DOMSelection* TreeScope::getSelection() const 288 DOMSelection* TreeScope::getSelection() const
289 { 289 {
290 if (!rootNode()->document()->frame()) 290 if (!rootNode()->document().frame())
291 return 0; 291 return 0;
292 292
293 if (m_selection) 293 if (m_selection)
294 return m_selection.get(); 294 return m_selection.get();
295 295
296 // FIXME: The correct selection in Shadow DOM requires that Position can hav e a ShadowRoot 296 // FIXME: The correct selection in Shadow DOM requires that Position can hav e a ShadowRoot
297 // as a container. 297 // as a container.
298 // See https://bugs.webkit.org/show_bug.cgi?id=82697 298 // See https://bugs.webkit.org/show_bug.cgi?id=82697
299 m_selection = DOMSelection::create(this); 299 m_selection = DOMSelection::create(this);
300 return m_selection.get(); 300 return m_selection.get();
301 } 301 }
302 302
303 Element* TreeScope::findAnchor(const String& name) 303 Element* TreeScope::findAnchor(const String& name)
304 { 304 {
305 if (name.isEmpty()) 305 if (name.isEmpty())
306 return 0; 306 return 0;
307 if (Element* element = getElementById(name)) 307 if (Element* element = getElementById(name))
308 return element; 308 return element;
309 for (Element* element = ElementTraversal::firstWithin(rootNode()); element; element = ElementTraversal::next(element)) { 309 for (Element* element = ElementTraversal::firstWithin(rootNode()); element; element = ElementTraversal::next(element)) {
310 if (isHTMLAnchorElement(element)) { 310 if (isHTMLAnchorElement(element)) {
311 HTMLAnchorElement* anchor = toHTMLAnchorElement(element); 311 HTMLAnchorElement* anchor = toHTMLAnchorElement(element);
312 if (rootNode()->document()->inQuirksMode()) { 312 if (rootNode()->document().inQuirksMode()) {
313 // Quirks mode, case insensitive comparison of names. 313 // Quirks mode, case insensitive comparison of names.
314 if (equalIgnoringCase(anchor->name(), name)) 314 if (equalIgnoringCase(anchor->name(), name))
315 return anchor; 315 return anchor;
316 } else { 316 } else {
317 // Strict mode, names need to match exactly. 317 // Strict mode, names need to match exactly.
318 if (anchor->name() == name) 318 if (anchor->name() == name)
319 return anchor; 319 return anchor;
320 } 320 }
321 } 321 }
322 } 322 }
(...skipping 20 matching lines...) Expand all
343 { 343 {
344 for (; focusedFrame; focusedFrame = focusedFrame->tree()->parent()) { 344 for (; focusedFrame; focusedFrame = focusedFrame->tree()->parent()) {
345 if (focusedFrame->tree()->parent() == currentFrame) 345 if (focusedFrame->tree()->parent() == currentFrame)
346 return focusedFrame->ownerElement(); 346 return focusedFrame->ownerElement();
347 } 347 }
348 return 0; 348 return 0;
349 } 349 }
350 350
351 Element* TreeScope::adjustedFocusedElement() 351 Element* TreeScope::adjustedFocusedElement()
352 { 352 {
353 Document* document = rootNode()->document(); 353 Document& document = rootNode()->document();
354 Element* element = document->focusedElement(); 354 Element* element = document.focusedElement();
355 if (!element && document->page()) 355 if (!element && document.page())
356 element = focusedFrameOwnerElement(document->page()->focusController().f ocusedFrame(), document->frame()); 356 element = focusedFrameOwnerElement(document.page()->focusController().fo cusedFrame(), document.frame());
357 if (!element) 357 if (!element)
358 return 0; 358 return 0;
359 Vector<Node*> targetStack; 359 Vector<Node*> targetStack;
360 for (EventPathWalker walker(element); walker.node(); walker.moveToParent()) { 360 for (EventPathWalker walker(element); walker.node(); walker.moveToParent()) {
361 Node* node = walker.node(); 361 Node* node = walker.node();
362 if (targetStack.isEmpty()) 362 if (targetStack.isEmpty())
363 targetStack.append(node); 363 targetStack.append(node);
364 else if (walker.isVisitingInsertionPointInReprojection()) 364 else if (walker.isVisitingInsertionPointInReprojection())
365 targetStack.append(targetStack.last()); 365 targetStack.append(targetStack.last());
366 if (node == rootNode()) { 366 if (node == rootNode()) {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 result = element; 498 result = element;
499 for (ShadowRoot* shadowRoot = element->youngestShadowRoot(); shadowRoot; shadowRoot = shadowRoot->olderShadowRoot()) { 499 for (ShadowRoot* shadowRoot = element->youngestShadowRoot(); shadowRoot; shadowRoot = shadowRoot->olderShadowRoot()) {
500 if (Element* shadowResult = shadowRoot->getElementByAccessKey(key)) 500 if (Element* shadowResult = shadowRoot->getElementByAccessKey(key))
501 result = shadowResult; 501 result = shadowResult;
502 } 502 }
503 } 503 }
504 return result; 504 return result;
505 } 505 }
506 506
507 } // namespace WebCore 507 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/Text.cpp ('k') | Source/core/dom/shadow/ElementShadow.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698