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

Side by Side Diff: base/values.cc

Issue 115149: Implement the popup blocking whitelist pref. This makes the whitelist actual... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 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
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/logging.h" 5 #include "base/logging.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/values.h" 7 #include "base/values.h"
8 8
9 ///////////////////// Value //////////////////// 9 ///////////////////// Value ////////////////////
10 10
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 return true; 490 return true;
491 } 491 }
492 492
493 ///////////////////// ListValue //////////////////// 493 ///////////////////// ListValue ////////////////////
494 494
495 ListValue::~ListValue() { 495 ListValue::~ListValue() {
496 Clear(); 496 Clear();
497 } 497 }
498 498
499 void ListValue::Clear() { 499 void ListValue::Clear() {
500 ValueVector::iterator list_iterator = list_.begin(); 500 for (ValueVector::iterator i(list_.begin()); i != list_.end(); ++i)
501 while (list_iterator != list_.end()) { 501 delete *i;
502 delete *list_iterator;
503 ++list_iterator;
504 }
505 list_.clear(); 502 list_.clear();
506 } 503 }
507 504
508 bool ListValue::Set(size_t index, Value* in_value) { 505 bool ListValue::Set(size_t index, Value* in_value) {
509 if (!in_value) 506 if (!in_value)
510 return false; 507 return false;
511 508
512 if (index >= list_.size()) { 509 if (index >= list_.size()) {
513 // Pad out any intermediate indexes with null settings 510 // Pad out any intermediate indexes with null settings
514 while (index > list_.size()) 511 while (index > list_.size())
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 599
603 bool ListValue::Remove(size_t index, Value** out_value) { 600 bool ListValue::Remove(size_t index, Value** out_value) {
604 if (index >= list_.size()) 601 if (index >= list_.size())
605 return false; 602 return false;
606 603
607 if (out_value) 604 if (out_value)
608 *out_value = list_[index]; 605 *out_value = list_[index];
609 else 606 else
610 delete list_[index]; 607 delete list_[index];
611 608
612 ValueVector::iterator entry = list_.begin(); 609 list_.erase(list_.begin() + index);
613 entry += index; 610 return true;
611 }
614 612
615 list_.erase(entry); 613 void ListValue::Remove(Value* in_value) {
616 return true; 614 for (ValueVector::iterator i(list_.begin()); i != list_.end(); ++i) {
615 if ((*i)->Equals(in_value)) {
616 list_.erase(i);
617 break;
618 }
619 }
617 } 620 }
618 621
619 void ListValue::Append(Value* in_value) { 622 void ListValue::Append(Value* in_value) {
620 DCHECK(in_value); 623 DCHECK(in_value);
621 list_.push_back(in_value); 624 list_.push_back(in_value);
622 } 625 }
623 626
624 Value* ListValue::DeepCopy() const { 627 Value* ListValue::DeepCopy() const {
625 ListValue* result = new ListValue; 628 ListValue* result = new ListValue;
626 629
627 ValueVector::const_iterator current_entry = list_.begin(); 630 for (ValueVector::const_iterator i(list_.begin()); i != list_.end(); ++i)
628 while (current_entry != list_.end()) { 631 result->Append((*i)->DeepCopy());
629 result->Append((*current_entry)->DeepCopy());
630 ++current_entry;
631 }
632 632
633 return result; 633 return result;
634 } 634 }
635 635
636 bool ListValue::Equals(const Value* other) const { 636 bool ListValue::Equals(const Value* other) const {
637 if (other->GetType() != GetType()) 637 if (other->GetType() != GetType())
638 return false; 638 return false;
639 639
640 const ListValue* other_list = 640 const ListValue* other_list =
641 static_cast<const ListValue*>(other); 641 static_cast<const ListValue*>(other);
642 const_iterator lhs_it, rhs_it; 642 const_iterator lhs_it, rhs_it;
643 for (lhs_it = begin(), rhs_it = other_list->begin(); 643 for (lhs_it = begin(), rhs_it = other_list->begin();
644 lhs_it != end() && rhs_it != other_list->end(); 644 lhs_it != end() && rhs_it != other_list->end();
645 ++lhs_it, ++rhs_it) { 645 ++lhs_it, ++rhs_it) {
646 if (!(*lhs_it)->Equals(*rhs_it)) 646 if (!(*lhs_it)->Equals(*rhs_it))
647 return false; 647 return false;
648 } 648 }
649 if (lhs_it != end() || rhs_it != other_list->end()) 649 if (lhs_it != end() || rhs_it != other_list->end())
650 return false; 650 return false;
651 651
652 return true; 652 return true;
653 } 653 }
OLDNEW
« base/values.h ('K') | « base/values.h ('k') | chrome/browser/browser_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698