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

Side by Side Diff: Source/core/inspector/DOMPatchSupport.cpp

Issue 800113002: Use C++11 range-based for loop in Source/core/inspector (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: REBASE AGAIN! Created 6 years 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) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 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 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 if (oldDigest->m_attrsSHA1 != newDigest->m_attrsSHA1) { 193 if (oldDigest->m_attrsSHA1 != newDigest->m_attrsSHA1) {
194 // FIXME: Create a function in Element for removing all properties. Take in account whether did/willModifyAttribute are important. 194 // FIXME: Create a function in Element for removing all properties. Take in account whether did/willModifyAttribute are important.
195 while (oldElement->attributesWithoutUpdate().size()) { 195 while (oldElement->attributesWithoutUpdate().size()) {
196 const Attribute& attribute = oldElement->attributesWithoutUpdate().a t(0); 196 const Attribute& attribute = oldElement->attributesWithoutUpdate().a t(0);
197 if (!m_domEditor->removeAttribute(oldElement, attribute.localName(), exceptionState)) 197 if (!m_domEditor->removeAttribute(oldElement, attribute.localName(), exceptionState))
198 return false; 198 return false;
199 } 199 }
200 200
201 // FIXME: Create a function in Element for copying properties. cloneData FromElement() is close but not enough for this case. 201 // FIXME: Create a function in Element for copying properties. cloneData FromElement() is close but not enough for this case.
202 AttributeCollection attributes = newElement->attributesWithoutUpdate(); 202 AttributeCollection attributes = newElement->attributesWithoutUpdate();
203 AttributeCollection::iterator end = attributes.end(); 203 for (auto it : attributes) {
pfeldman 2014/12/16 16:52:10 Here and below: are you creating copies here?
zhaoze.zhou 2014/12/16 18:56:39 Done.
204 for (AttributeCollection::iterator it = attributes.begin(); it != end; + +it) { 204 if (!m_domEditor->setAttribute(oldElement, it.name().localName(), it .value(), exceptionState))
205 if (!m_domEditor->setAttribute(oldElement, it->name().localName(), i t->value(), exceptionState))
206 return false; 205 return false;
207 } 206 }
208 } 207 }
209 208
210 bool result = innerPatchChildren(oldElement, oldDigest->m_children, newDiges t->m_children, exceptionState); 209 bool result = innerPatchChildren(oldElement, oldDigest->m_children, newDiges t->m_children, exceptionState);
211 m_unusedNodesMap.remove(newDigest->m_sha1); 210 m_unusedNodesMap.remove(newDigest->m_sha1);
212 return result; 211 return result;
213 } 212 }
214 213
215 pair<DOMPatchSupport::ResultMap, DOMPatchSupport::ResultMap> 214 pair<DOMPatchSupport::ResultMap, DOMPatchSupport::ResultMap>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 DiffTable oldTable; 248 DiffTable oldTable;
250 249
251 for (size_t i = 0; i < newList.size(); ++i) { 250 for (size_t i = 0; i < newList.size(); ++i) {
252 newTable.add(newList[i]->m_sha1, Vector<size_t>()).storedValue->value.ap pend(i); 251 newTable.add(newList[i]->m_sha1, Vector<size_t>()).storedValue->value.ap pend(i);
253 } 252 }
254 253
255 for (size_t i = 0; i < oldList.size(); ++i) { 254 for (size_t i = 0; i < oldList.size(); ++i) {
256 oldTable.add(oldList[i]->m_sha1, Vector<size_t>()).storedValue->value.ap pend(i); 255 oldTable.add(oldList[i]->m_sha1, Vector<size_t>()).storedValue->value.ap pend(i);
257 } 256 }
258 257
259 for (DiffTable::iterator newIt = newTable.begin(); newIt != newTable.end(); ++newIt) { 258 for (auto newIt : newTable) {
260 if (newIt->value.size() != 1) 259 if (newIt.value.size() != 1)
261 continue; 260 continue;
262 261
263 DiffTable::iterator oldIt = oldTable.find(newIt->key); 262 DiffTable::iterator oldIt = oldTable.find(newIt.key);
264 if (oldIt == oldTable.end() || oldIt->value.size() != 1) 263 if (oldIt == oldTable.end() || oldIt->value.size() != 1)
265 continue; 264 continue;
266 265
267 newMap[newIt->value[0]] = std::make_pair(newList[newIt->value[0]].get(), oldIt->value[0]); 266 newMap[newIt.value[0]] = std::make_pair(newList[newIt.value[0]].get(), o ldIt->value[0]);
268 oldMap[oldIt->value[0]] = std::make_pair(oldList[oldIt->value[0]].get(), newIt->value[0]); 267 oldMap[oldIt->value[0]] = std::make_pair(oldList[oldIt->value[0]].get(), newIt.value[0]);
269 } 268 }
270 269
271 for (size_t i = 0; newList.size() > 0 && i < newList.size() - 1; ++i) { 270 for (size_t i = 0; newList.size() > 0 && i < newList.size() - 1; ++i) {
272 if (!newMap[i].first || newMap[i + 1].first) 271 if (!newMap[i].first || newMap[i + 1].first)
273 continue; 272 continue;
274 273
275 size_t j = newMap[i].second + 1; 274 size_t j = newMap[i].second + 1;
276 if (j < oldMap.size() && !oldMap[j].first && newList[i + 1]->m_sha1 == o ldList[j]->m_sha1) { 275 if (j < oldMap.size() && !oldMap[j].first && newList[i + 1]->m_sha1 == o ldList[j]->m_sha1) {
277 newMap[i + 1] = std::make_pair(newList[i + 1].get(), j); 276 newMap[i + 1] = std::make_pair(newList[i + 1].get(), j);
278 oldMap[j] = std::make_pair(oldList[j].get(), i + 1); 277 oldMap[j] = std::make_pair(oldList[j].get(), i + 1);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 if (oldHead || oldBody) { 364 if (oldHead || oldBody) {
366 for (size_t i = 0; i < newList.size(); ++i) { 365 for (size_t i = 0; i < newList.size(); ++i) {
367 if (oldHead && isHTMLHeadElement(*newList[i]->m_node)) 366 if (oldHead && isHTMLHeadElement(*newList[i]->m_node))
368 merges.set(newList[i].get(), oldHead); 367 merges.set(newList[i].get(), oldHead);
369 if (oldBody && isHTMLBodyElement(*newList[i]->m_node)) 368 if (oldBody && isHTMLBodyElement(*newList[i]->m_node))
370 merges.set(newList[i].get(), oldBody); 369 merges.set(newList[i].get(), oldBody);
371 } 370 }
372 } 371 }
373 372
374 // 2. Patch nodes marked for merge. 373 // 2. Patch nodes marked for merge.
375 for (HashMap<Digest*, Digest*>::iterator it = merges.begin(); it != merges.e nd(); ++it) { 374 for (auto it : merges) {
376 if (!innerPatchNode(it->value, it->key, exceptionState)) 375 if (!innerPatchNode(it.value, it.key, exceptionState))
377 return false; 376 return false;
378 } 377 }
379 378
380 // 3. Insert missing nodes. 379 // 3. Insert missing nodes.
381 for (size_t i = 0; i < newMap.size(); ++i) { 380 for (size_t i = 0; i < newMap.size(); ++i) {
382 if (newMap[i].first || merges.contains(newList[i].get())) 381 if (newMap[i].first || merges.contains(newList[i].get()))
383 continue; 382 continue;
384 if (!insertBeforeAndMarkAsUsed(parentNode, newList[i].get(), NodeTravers al::childAt(*parentNode, i), exceptionState)) 383 if (!insertBeforeAndMarkAsUsed(parentNode, newList[i].get(), NodeTravers al::childAt(*parentNode, i), exceptionState))
385 return false; 384 return false;
386 } 385 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 while (child) { 424 while (child) {
426 OwnPtr<Digest> childInfo = createDigest(child, unusedNodesMap); 425 OwnPtr<Digest> childInfo = createDigest(child, unusedNodesMap);
427 addStringToDigestor(digestor.get(), childInfo->m_sha1); 426 addStringToDigestor(digestor.get(), childInfo->m_sha1);
428 child = child->nextSibling(); 427 child = child->nextSibling();
429 digest->m_children.append(childInfo.release()); 428 digest->m_children.append(childInfo.release());
430 } 429 }
431 430
432 AttributeCollection attributes = element.attributesWithoutUpdate(); 431 AttributeCollection attributes = element.attributesWithoutUpdate();
433 if (!attributes.isEmpty()) { 432 if (!attributes.isEmpty()) {
434 OwnPtr<blink::WebCryptoDigestor> attrsDigestor = createDigestor(Hash AlgorithmSha1); 433 OwnPtr<blink::WebCryptoDigestor> attrsDigestor = createDigestor(Hash AlgorithmSha1);
435 AttributeCollection::iterator end = attributes.end(); 434 for (auto it : attributes) {
436 for (AttributeCollection::iterator it = attributes.begin(); it != en d; ++it) { 435 addStringToDigestor(attrsDigestor.get(), it.name().toString());
437 addStringToDigestor(attrsDigestor.get(), it->name().toString()); 436 addStringToDigestor(attrsDigestor.get(), it.value().string());
438 addStringToDigestor(attrsDigestor.get(), it->value().string());
439 } 437 }
440 finishDigestor(attrsDigestor.get(), digestResult); 438 finishDigestor(attrsDigestor.get(), digestResult);
441 digest->m_attrsSHA1 = base64Encode(reinterpret_cast<const char*>(dig estResult.data()), 10); 439 digest->m_attrsSHA1 = base64Encode(reinterpret_cast<const char*>(dig estResult.data()), 10);
442 addStringToDigestor(digestor.get(), digest->m_attrsSHA1); 440 addStringToDigestor(digestor.get(), digest->m_attrsSHA1);
443 digestResult.clear(); 441 digestResult.clear();
444 } 442 }
445 } 443 }
446 finishDigestor(digestor.get(), digestResult); 444 finishDigestor(digestor.get(), digestResult);
447 digest->m_sha1 = base64Encode(reinterpret_cast<const char*>(digestResult.dat a()), 10); 445 digest->m_sha1 = base64Encode(reinterpret_cast<const char*>(digestResult.dat a()), 10);
448 446
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 void DOMPatchSupport::dumpMap(const ResultMap& map, const String& name) 508 void DOMPatchSupport::dumpMap(const ResultMap& map, const String& name)
511 { 509 {
512 fprintf(stderr, "\n\n"); 510 fprintf(stderr, "\n\n");
513 for (size_t i = 0; i < map.size(); ++i) 511 for (size_t i = 0; i < map.size(); ++i)
514 fprintf(stderr, "%s[%lu]: %s (%p) - [%lu]\n", name.utf8().data(), i, map [i].first ? nodeName(map[i].first->m_node).utf8().data() : "", map[i].first, map [i].second); 512 fprintf(stderr, "%s[%lu]: %s (%p) - [%lu]\n", name.utf8().data(), i, map [i].first ? nodeName(map[i].first->m_node).utf8().data() : "", map[i].first, map [i].second);
515 } 513 }
516 #endif 514 #endif
517 515
518 } // namespace blink 516 } // namespace blink
519 517
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698