blob: 8afd7868720ba81148b2a30c3364e8baad56be4e [file] [log] [blame]
[email protected]68c7630b2012-05-02 22:37:421// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]76a010b2008-12-07 23:48:032// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]265a1492011-02-27 05:58:075#ifndef CHROME_BROWSER_UI_WEBUI_HISTORY_UI_H_
6#define CHROME_BROWSER_UI_WEBUI_HISTORY_UI_H_
[email protected]76a010b2008-12-07 23:48:037
[email protected]038d52e12009-10-14 16:53:418#include <string>
[email protected]0189bc722009-08-28 21:56:489
[email protected]e53668962010-06-23 15:35:2510#include "base/string16.h"
[email protected]5581d762011-12-27 14:05:2411#include "chrome/browser/cancelable_request.h"
[email protected]b689fce72009-03-17 22:45:3412#include "chrome/browser/history/history.h"
[email protected]fd42ac30f2011-02-27 19:33:3613#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
[email protected]6c2381d2011-10-19 02:52:5314#include "content/public/browser/notification_registrar.h"
[email protected]e14c959122012-01-13 16:58:2515#include "content/public/browser/web_ui_controller.h"
[email protected]26e2632a2011-12-31 04:02:5516#include "content/public/browser/web_ui_message_handler.h"
[email protected]76a010b2008-12-07 23:48:0317
[email protected]76a010b2008-12-07 23:48:0318// The handler for Javascript messages related to the "history" view.
[email protected]26e2632a2011-12-31 04:02:5519class BrowsingHistoryHandler : public content::WebUIMessageHandler,
[email protected]6c2381d2011-10-19 02:52:5320 public content::NotificationObserver {
[email protected]76a010b2008-12-07 23:48:0321 public:
[email protected]2bc2de62009-06-29 23:37:4222 BrowsingHistoryHandler();
[email protected]76a010b2008-12-07 23:48:0323 virtual ~BrowsingHistoryHandler();
24
[email protected]36e12172011-02-08 23:46:0225 // WebUIMessageHandler implementation.
[email protected]3abbed002011-08-01 16:02:2026 virtual void RegisterMessages() OVERRIDE;
[email protected]2bc2de62009-06-29 23:37:4227
[email protected]60a83db2012-04-05 14:11:1428 // Handler for the "getHistory" message.
[email protected]f3a1c642011-07-12 19:15:0329 void HandleGetHistory(const base::ListValue* args);
[email protected]76a010b2008-12-07 23:48:0330
[email protected]60a83db2012-04-05 14:11:1431 // Handler for the "searchHistory" message.
[email protected]f3a1c642011-07-12 19:15:0332 void HandleSearchHistory(const base::ListValue* args);
[email protected]fbf644e72009-02-19 22:26:0633
[email protected]60a83db2012-04-05 14:11:1434 // Handler for the "removeURLsOnOneDay" message.
[email protected]f3a1c642011-07-12 19:15:0335 void HandleRemoveURLsOnOneDay(const base::ListValue* args);
[email protected]21f4d2512010-03-05 08:15:5336
[email protected]60a83db2012-04-05 14:11:1437 // Handler for "clearBrowsingData" message.
[email protected]f3a1c642011-07-12 19:15:0338 void HandleClearBrowsingData(const base::ListValue* args);
[email protected]fbf644e72009-02-19 22:26:0639
[email protected]60a83db2012-04-05 14:11:1440 // Handler for "removeBookmark" message.
41 void HandleRemoveBookmark(const base::ListValue* args);
42
[email protected]6c2381d2011-10-19 02:52:5343 // content::NotificationObserver implementation.
[email protected]432115822011-07-10 15:52:2744 virtual void Observe(int type,
[email protected]6c2381d2011-10-19 02:52:5345 const content::NotificationSource& source,
46 const content::NotificationDetails& details) OVERRIDE;
[email protected]9f392932011-06-09 14:08:0047
[email protected]76a010b2008-12-07 23:48:0348 private:
[email protected]fbf644e72009-02-19 22:26:0649 // Callback from the history system when the history list is available.
[email protected]76a010b2008-12-07 23:48:0350 void QueryComplete(HistoryService::Handle request_handle,
51 history::QueryResults* results);
52
[email protected]21f4d2512010-03-05 08:15:5353 // Callback from the history system when visits were deleted.
54 void RemoveComplete();
55
[email protected]fbf644e72009-02-19 22:26:0656 // Extract the arguments from the call to HandleSearchHistory.
[email protected]f3a1c642011-07-12 19:15:0357 void ExtractSearchHistoryArguments(const base::ListValue* args,
[email protected]f0a51fb52009-03-05 12:46:3858 int* month,
[email protected]e53668962010-06-23 15:35:2559 string16* query);
[email protected]76a010b2008-12-07 23:48:0360
[email protected]fbf644e72009-02-19 22:26:0661 // Figure out the query options for a month-wide query.
62 history::QueryOptions CreateMonthQueryOptions(int month);
[email protected]76a010b2008-12-07 23:48:0363
[email protected]6c2381d2011-10-19 02:52:5364 content::NotificationRegistrar registrar_;
[email protected]9f392932011-06-09 14:08:0065
[email protected]76a010b2008-12-07 23:48:0366 // Current search text.
[email protected]e53668962010-06-23 15:35:2567 string16 search_text_;
[email protected]76a010b2008-12-07 23:48:0368
[email protected]b660ea9f2010-05-31 07:55:5169 // Our consumer for search requests to the history service.
70 CancelableRequestConsumerT<int, 0> cancelable_search_consumer_;
71
72 // Our consumer for delete requests to the history service.
73 CancelableRequestConsumerT<int, 0> cancelable_delete_consumer_;
[email protected]76a010b2008-12-07 23:48:0374
[email protected]d66bbe02011-11-16 10:19:4375 // The list of URLs that are in the process of being deleted.
76 std::set<GURL> urls_to_be_deleted_;
77
[email protected]76a010b2008-12-07 23:48:0378 DISALLOW_COPY_AND_ASSIGN(BrowsingHistoryHandler);
79};
80
[email protected]c63cedf22012-01-17 18:42:2281class HistoryUI : public content::WebUIController {
[email protected]76a010b2008-12-07 23:48:0382 public:
[email protected]01ec4ec2012-01-18 04:13:4783 explicit HistoryUI(content::WebUI* web_ui);
[email protected]76a010b2008-12-07 23:48:0384
[email protected]9e4c0332009-02-25 17:47:5885 // Return the URL for a given search term.
[email protected]e53668962010-06-23 15:35:2586 static const GURL GetHistoryURLWithSearchText(const string16& text);
[email protected]9e4c0332009-02-25 17:47:5887
[email protected]68c7630b2012-05-02 22:37:4288 static base::RefCountedMemory* GetFaviconResourceBytes();
[email protected]0189bc722009-08-28 21:56:4889
[email protected]76a010b2008-12-07 23:48:0390 private:
[email protected]76a010b2008-12-07 23:48:0391 DISALLOW_COPY_AND_ASSIGN(HistoryUI);
92};
93
[email protected]265a1492011-02-27 05:58:0794#endif // CHROME_BROWSER_UI_WEBUI_HISTORY_UI_H_