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

Side by Side Diff: Source/core/frame/SmartClip.cpp

Issue 310353003: Oilpan: Replace RefPtrs and raw pointers to Node and its subclasses in core/frame and core/page wit… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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/frame/SmartClip.h ('k') | Source/core/page/DragController.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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 // FIXME: SmartClipData is eventually returned via 64 // FIXME: SmartClipData is eventually returned via
65 // SLookSmartClip.DataExtractionListener: 65 // SLookSmartClip.DataExtractionListener:
66 // http://img-developer.samsung.com/onlinedocs/sms/com/samsung/android/sdk/look/ ... 66 // http://img-developer.samsung.com/onlinedocs/sms/com/samsung/android/sdk/look/ ...
67 // however the original author of this change chose to use a string-serializatio n 67 // however the original author of this change chose to use a string-serializatio n
68 // format (presumably to make IPC easy?). 68 // format (presumably to make IPC easy?).
69 // If we're going to use this as a Pickle format, we should at least have the 69 // If we're going to use this as a Pickle format, we should at least have the
70 // read/write code in one place! 70 // read/write code in one place!
71 String SmartClipData::toString() 71 String SmartClipData::toString()
72 { 72 {
73 if (!m_node) 73 if (m_isEmpty)
74 return emptyString(); 74 return emptyString();
75 75
76 const UChar fieldSeparator = 0xFFFE; 76 const UChar fieldSeparator = 0xFFFE;
77 const UChar rowSeparator = 0xFFFF; 77 const UChar rowSeparator = 0xFFFF;
78 78
79 StringBuilder result; 79 StringBuilder result;
80 result.append(String::number(m_rect.x())); 80 result.append(String::number(m_rect.x()));
81 result.append(fieldSeparator); 81 result.append(fieldSeparator);
82 result.append(String::number(m_rect.y())); 82 result.append(String::number(m_rect.y()));
83 result.append(fieldSeparator); 83 result.append(fieldSeparator);
(...skipping 18 matching lines...) Expand all
102 Node* bestNode = findBestOverlappingNode(m_frame->document(), resizedCropRec t); 102 Node* bestNode = findBestOverlappingNode(m_frame->document(), resizedCropRec t);
103 if (!bestNode) 103 if (!bestNode)
104 return SmartClipData(); 104 return SmartClipData();
105 105
106 if (Node* nodeFromFrame = nodeInsideFrame(bestNode)) { 106 if (Node* nodeFromFrame = nodeInsideFrame(bestNode)) {
107 // FIXME: This code only hit-tests a single iframe. It seems like we oug ht support nested frames. 107 // FIXME: This code only hit-tests a single iframe. It seems like we oug ht support nested frames.
108 if (Node* bestNodeInFrame = findBestOverlappingNode(nodeFromFrame, resiz edCropRect)) 108 if (Node* bestNodeInFrame = findBestOverlappingNode(nodeFromFrame, resiz edCropRect))
109 bestNode = bestNodeInFrame; 109 bestNode = bestNodeInFrame;
110 } 110 }
111 111
112 Vector<Node*> hitNodes; 112 WillBeHeapVector<RawPtrWillBeMember<Node> > hitNodes;
113 collectOverlappingChildNodes(bestNode, resizedCropRect, hitNodes); 113 collectOverlappingChildNodes(bestNode, resizedCropRect, hitNodes);
114 114
115 if (hitNodes.isEmpty() || hitNodes.size() == bestNode->countChildren()) { 115 if (hitNodes.isEmpty() || hitNodes.size() == bestNode->countChildren()) {
116 hitNodes.clear(); 116 hitNodes.clear();
117 hitNodes.append(bestNode); 117 hitNodes.append(bestNode);
118 } 118 }
119 119
120 // Unite won't work with the empty rect, so we initialize to the first rect. 120 // Unite won't work with the empty rect, so we initialize to the first rect.
121 IntRect unitedRects = hitNodes[0]->pixelSnappedBoundingBox(); 121 IntRect unitedRects = hitNodes[0]->pixelSnappedBoundingBox();
122 StringBuilder collectedText; 122 StringBuilder collectedText;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 // image out of a CSS background, you're probably going to specify a height 230 // image out of a CSS background, you're probably going to specify a height
231 // or a width. On the other hand, if we've got a legit background image, 231 // or a width. On the other hand, if we've got a legit background image,
232 // it's very likely the height or the width will be set to auto. 232 // it's very likely the height or the width will be set to auto.
233 RenderObject* renderer = node->renderer(); 233 RenderObject* renderer = node->renderer();
234 if (renderer && (renderer->style()->logicalHeight().isAuto() || renderer->st yle()->logicalWidth().isAuto())) 234 if (renderer && (renderer->style()->logicalHeight().isAuto() || renderer->st yle()->logicalWidth().isAuto()))
235 return true; 235 return true;
236 236
237 return false; 237 return false;
238 } 238 }
239 239
240 void SmartClip::collectOverlappingChildNodes(Node* parentNode, const IntRect& cr opRect, Vector<Node*>& hitNodes) 240 void SmartClip::collectOverlappingChildNodes(Node* parentNode, const IntRect& cr opRect, WillBeHeapVector<RawPtrWillBeMember<Node> >& hitNodes)
241 { 241 {
242 if (!parentNode) 242 if (!parentNode)
243 return; 243 return;
244 IntRect resizedCropRect = parentNode->document().view()->windowToContents(cr opRect); 244 IntRect resizedCropRect = parentNode->document().view()->windowToContents(cr opRect);
245 for (Node* child = parentNode->firstChild(); child; child = child->nextSibli ng()) { 245 for (Node* child = parentNode->firstChild(); child; child = child->nextSibli ng()) {
246 IntRect childRect = child->pixelSnappedBoundingBox(); 246 IntRect childRect = child->pixelSnappedBoundingBox();
247 if (resizedCropRect.intersects(childRect)) 247 if (resizedCropRect.intersects(childRect))
248 hitNodes.append(child); 248 hitNodes.append(child);
249 } 249 }
250 } 250 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 287
288 result.append(nodeValue); 288 result.append(nodeValue);
289 } 289 }
290 } 290 }
291 } 291 }
292 292
293 return result.toString(); 293 return result.toString();
294 } 294 }
295 295
296 } // namespace WebCore 296 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/frame/SmartClip.h ('k') | Source/core/page/DragController.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698