autofill_scanner.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "components/autofill/core/browser/autofill_scanner.h" 6 7#include "base/logging.h" 8#include "components/autofill/core/browser/autofill_field.h" 9 10namespace autofill { 11 12AutofillScanner::AutofillScanner( 13 const std::vector<const AutofillField*>& fields) 14 : cursor_(fields.begin()), 15 saved_cursor_(fields.begin()), 16 begin_(fields.begin()), 17 end_(fields.end()) { 18} 19 20AutofillScanner::~AutofillScanner() { 21} 22 23void AutofillScanner::Advance() { 24 DCHECK(!IsEnd()); 25 ++cursor_; 26} 27 28const AutofillField* AutofillScanner::Cursor() const { 29 if (IsEnd()) { 30 NOTREACHED(); 31 return NULL; 32 } 33 34 return *cursor_; 35} 36 37bool AutofillScanner::IsEnd() const { 38 return cursor_ == end_; 39} 40 41void AutofillScanner::Rewind() { 42 DCHECK(saved_cursor_ != end_); 43 cursor_ = saved_cursor_; 44 saved_cursor_ = end_; 45} 46 47void AutofillScanner::RewindTo(size_t index) { 48 DCHECK(index < static_cast<size_t>(end_ - begin_)); 49 cursor_ = begin_ + index; 50 saved_cursor_ = end_; 51} 52 53size_t AutofillScanner::SaveCursor() { 54 saved_cursor_ = cursor_; 55 return static_cast<size_t>(cursor_ - begin_); 56} 57 58} // namespace autofill 59