// Copyright (c) 2010 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_ #pragma once #include #include #include "base/string16.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, bool is_off_the_record, int request_id); virtual std::string GetMimeType(const std::string&) const { return "text/html"; } private: ~HistoryUIHTMLSource() {} DISALLOW_COPY_AND_ASSIGN(HistoryUIHTMLSource); }; // The handler for Javascript messages related to the "history" view. class BrowsingHistoryHandler : public DOMMessageHandler, public NotificationObserver { 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 "removeURLsOnOneDay" message. void HandleRemoveURLsOnOneDay(const Value* value); // Handle for "clearBrowsingData" message. void HandleClearBrowsingData(const Value* value); // NotificationObserver implementation. virtual void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); private: // Callback from the history system when the history list is available. void QueryComplete(HistoryService::Handle request_handle, history::QueryResults* results); // Callback from the history system when visits were deleted. void RemoveComplete(); // Extract the arguments from the call to HandleSearchHistory. void ExtractSearchHistoryArguments(const Value* value, int* month, string16* query); // Figure out the query options for a month-wide query. history::QueryOptions CreateMonthQueryOptions(int month); NotificationRegistrar registrar_; // Current search text. string16 search_text_; // Our consumer for search requests to the history service. CancelableRequestConsumerT cancelable_search_consumer_; // Our consumer for delete requests to the history service. CancelableRequestConsumerT cancelable_delete_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 string16& text); static RefCountedMemory* GetFaviconResourceBytes(); private: DISALLOW_COPY_AND_ASSIGN(HistoryUI); }; #endif // CHROME_BROWSER_DOM_UI_HISTORY_UI_H_