1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef COMPONENTS_HISTORY_CORE_BROWSER_HISTORY_CLIENT_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define COMPONENTS_HISTORY_CORE_BROWSER_HISTORY_CLIENT_H_ 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include <vector> 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/macros.h" 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/strings/string16.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/keyed_service/core/keyed_service.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "sql/init_status.h" 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "url/gurl.h" 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace history { 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)struct URLAndTitle { 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) GURL url; 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) base::string16 title; 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}; 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// This class abstracts operations that depend on the embedder's environment, 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// e.g. Chrome. 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class HistoryClient : public KeyedService { 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public: 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) HistoryClient(); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Waits until the bookmarks have been loaded. 3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Must not be called from the main thread. 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void BlockUntilBookmarksLoaded(); 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Returns true if the specified URL is bookmarked. 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // If not on the main thread, then BlockUntilBookmarksLoaded must be called. 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual bool IsBookmarked(const GURL& url); 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Returns, by reference in |bookmarks|, the set of bookmarked urls and their 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // titles. This returns the unique set of URLs. For example, if two bookmarks 4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // reference the same URL only one entry is added even if the title are not 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // the same. 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // If not on the main thread, then BlockUntilBookmarksLoaded must be called. 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void GetBookmarks(std::vector<URLAndTitle>* bookmarks); 4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Notifies the embedder that there was a problem reading the database. 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Must be called from the main thread. 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void NotifyProfileError(sql::InitStatus init_status); 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns whether database errors should be reported to the crash server. 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool ShouldReportDatabaseError(); 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) protected: 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(HistoryClient); 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace history 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // COMPONENTS_HISTORY_CORE_BROWSER_HISTORY_CLIENT_H_ 62