// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_DOM_UI_HISTORY_UI_H_ #define CHROME_BROWSER_DOM_UI_HISTORY_UI_H_ #include #include #include "chrome/browser/browsing_data_remover.h" #include "chrome/browser/dom_ui/chrome_url_data_manager.h" #include "chrome/browser/dom_ui/dom_ui.h" #include "chrome/browser/cancelable_request.h" #include "chrome/browser/history/history.h" #include "chrome/common/notification_registrar.h" class GURL; class HistoryUIHTMLSource : public ChromeURLDataManager::DataSource { public: HistoryUIHTMLSource(); // Called when the network layer has requested a resource underneath // the path we registered. virtual void StartDataRequest(const std::string& path, int request_id); virtual std::string GetMimeType(const std::string&) const { return "text/html"; } private: DISALLOW_COPY_AND_ASSIGN(HistoryUIHTMLSource); }; // The handler for Javascript messages related to the "history" view. class BrowsingHistoryHandler : public DOMMessageHandler, public NotificationObserver, public BrowsingDataRemover::Observer { public: BrowsingHistoryHandler(); virtual ~BrowsingHistoryHandler(); // DOMMessageHandler implementation. virtual DOMMessageHandler* Attach(DOMUI* dom_ui); virtual void RegisterMessages(); // Callback for the "getHistory" message. void HandleGetHistory(const Value* value); // Callback for the "searchHistory" message. void HandleSearchHistory(const Value* value); // Callback for the "deleteDay" message. void HandleDeleteDay(const Value* value); // NotificationObserver implementation. virtual void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); // BrowsingDataRemover observer implementation. void OnBrowsingDataRemoverDone(); private: // Callback from the history system when the history list is available. void QueryComplete(HistoryService::Handle request_handle, history::QueryResults* results); // Extract the arguments from the call to HandleSearchHistory. void ExtractSearchHistoryArguments(const Value* value, int* month, std::wstring* query); // Figure out the query options for a month-wide query. history::QueryOptions CreateMonthQueryOptions(int month); NotificationRegistrar registrar_; // Current search text. std::wstring search_text_; // Browsing history remover BrowsingDataRemover* remover_; // Our consumer for the history service. CancelableRequestConsumerT cancelable_consumer_; DISALLOW_COPY_AND_ASSIGN(BrowsingHistoryHandler); }; class HistoryUI : public DOMUI { public: explicit HistoryUI(TabContents* contents); // Return the URL for a given search term. static const GURL GetHistoryURLWithSearchText(const std::wstring& text); static RefCountedMemory* GetFaviconResourceBytes(); private: DISALLOW_COPY_AND_ASSIGN(HistoryUI); }; #endif // CHROME_BROWSER_DOM_UI_HISTORY_UI_H_