Home | History | Annotate | Download | only in android
      1 // Copyright (c) 2012 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 "chrome/browser/history/android/android_urls_sql_handler.h"
      6 
      7 #include "base/logging.h"
      8 #include "chrome/browser/history/history_database.h"
      9 
     10 namespace history {
     11 
     12 namespace {
     13 
     14 // The interesting columns of this handler.
     15 const HistoryAndBookmarkRow::ColumnID kInterestingColumns[] = {
     16     HistoryAndBookmarkRow::RAW_URL, HistoryAndBookmarkRow::URL_ID };
     17 
     18 } // namespace
     19 
     20 AndroidURLsSQLHandler::AndroidURLsSQLHandler(HistoryDatabase* history_db)
     21     : SQLHandler(kInterestingColumns, arraysize(kInterestingColumns)),
     22       history_db_(history_db) {
     23 }
     24 
     25 AndroidURLsSQLHandler::~AndroidURLsSQLHandler() {
     26 }
     27 
     28 bool AndroidURLsSQLHandler::Update(const HistoryAndBookmarkRow& row,
     29                                    const TableIDRows& ids_set) {
     30   DCHECK(row.is_value_set_explicitly(HistoryAndBookmarkRow::URL_ID));
     31   DCHECK(row.is_value_set_explicitly(HistoryAndBookmarkRow::RAW_URL));
     32   if (ids_set.size() != 1)
     33     return false;
     34 
     35   AndroidURLRow android_url_row;
     36   if (!history_db_->GetAndroidURLRow(ids_set[0].url_id, &android_url_row))
     37     return false;
     38 
     39   return history_db_->UpdateAndroidURLRow(android_url_row.id, row.raw_url(),
     40                                           row.url_id());
     41 }
     42 
     43 bool AndroidURLsSQLHandler::Insert(HistoryAndBookmarkRow* row) {
     44   AndroidURLID new_id = history_db_->AddAndroidURLRow(row->raw_url(),
     45                                                       row->url_id());
     46   row->set_id(new_id);
     47   return new_id;
     48 }
     49 
     50 bool AndroidURLsSQLHandler::Delete(const TableIDRows& ids_set) {
     51   std::vector<URLID> ids;
     52   for (TableIDRows::const_iterator id = ids_set.begin();
     53        id != ids_set.end(); ++id)
     54     ids.push_back(id->url_id);
     55 
     56   if (!ids.size())
     57     return true;
     58 
     59   return history_db_->DeleteAndroidURLRows(ids);
     60 }
     61 
     62 }  // namespace history.
     63