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)#ifndef CHROME_BROWSER_HISTORY_ANDROID_BOOKMARK_MODEL_SQL_HANDLER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_HISTORY_ANDROID_BOOKMARK_MODEL_SQL_HANDLER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/android/sql_handler.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BookmarkModel; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace history { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HistoryDatabase; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The SQL handler for bookmarking_mapping table. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BookmarkModelSQLHandler : public SQLHandler { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit BookmarkModelSQLHandler(URLDatabase* url_database); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~BookmarkModelSQLHandler(); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // SQLHandler overrides: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Update(const HistoryAndBookmarkRow& row, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const TableIDRows& ids_set) OVERRIDE; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Delete(const TableIDRows& ids_set) OVERRIDE; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Insert(HistoryAndBookmarkRow* row) OVERRIDE; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This class helps to modify the bookmark model in UI thread. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The instance of this class is created in history thread and posted to 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // UI thread to access the bookmark. All method must be run in UI thread. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Task : public base::RefCountedThreadSafe<Task> { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |profile| is the profile whose BookmarkModel will be modified. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // As this class is instantiated in history thread, the |profile| will be 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // checked to see if it is still valid in ProfileManger before it used to 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // get bookmark model in UI thread; So we can make sure the bookmark model 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // we working on is still valid at the time it is used. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Task(); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add the a bookmark with the given |url| to mobile folder. 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void AddBookmarkToMobileFolder(const GURL& url, 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& title); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds a bookmark with the given |url|, |title| and |parent_id|. 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void AddBookmark(const GURL& url, 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& title, 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int64 parent_id); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes the bookmark with the given |url|. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveBookmark(const GURL& url); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the given bookmark's title. 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void UpdateBookmarkTitle(const GURL& url, 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& title); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class base::RefCountedThreadSafe<Task>; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Task(); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns profile_'s BookmarkModel if the profile_ is valid. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkModel* GetBookmarkModel(); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Task); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLDatabase* url_database_; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BookmarkModelSQLHandler); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace history. 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_HISTORY_ANDROID_BOOKMARK_MODEL_SQL_HANDLER_H_ 78