15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/android/android_urls_sql_handler.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/history_database.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace history {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The interesting columns of this handler.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const HistoryAndBookmarkRow::ColumnID kInterestingColumns[] = {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    HistoryAndBookmarkRow::RAW_URL, HistoryAndBookmarkRow::URL_ID };
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AndroidURLsSQLHandler::AndroidURLsSQLHandler(HistoryDatabase* history_db)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : SQLHandler(kInterestingColumns, arraysize(kInterestingColumns)),
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      history_db_(history_db) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AndroidURLsSQLHandler::~AndroidURLsSQLHandler() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool AndroidURLsSQLHandler::Update(const HistoryAndBookmarkRow& row,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const TableIDRows& ids_set) {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(row.is_value_set_explicitly(HistoryAndBookmarkRow::URL_ID));
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(row.is_value_set_explicitly(HistoryAndBookmarkRow::RAW_URL));
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (ids_set.size() != 1)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AndroidURLRow android_url_row;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!history_db_->GetAndroidURLRow(ids_set[0].url_id, &android_url_row))
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return history_db_->UpdateAndroidURLRow(android_url_row.id, row.raw_url(),
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          row.url_id());
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool AndroidURLsSQLHandler::Insert(HistoryAndBookmarkRow* row) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AndroidURLID new_id = history_db_->AddAndroidURLRow(row->raw_url(),
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                      row->url_id());
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row->set_id(new_id);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return new_id;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool AndroidURLsSQLHandler::Delete(const TableIDRows& ids_set) {
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<URLID> ids;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (TableIDRows::const_iterator id = ids_set.begin();
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       id != ids_set.end(); ++id)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ids.push_back(id->url_id);
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!ids.size())
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return true;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return history_db_->DeleteAndroidURLRows(ids);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace history.
63