blob: fb6e28829858bc68dab8b5abd6bda3f21e4ee869 [file] [log] [blame]
[email protected]7ade2732011-02-10 00:13:581// Copyright (c) 2011 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]32b76ef2010-07-26 23:08:247#pragma once
[email protected]76a010b2008-12-07 23:48:038
[email protected]038d52e12009-10-14 16:53:419#include <string>
[email protected]0189bc722009-08-28 21:56:4810
[email protected]e53668962010-06-23 15:35:2511#include "base/string16.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]4d241a52011-06-06 15:32:2714#include "chrome/browser/ui/webui/chrome_web_ui.h"
[email protected]a01efd22011-03-01 00:38:3215#include "content/browser/cancelable_request.h"
[email protected]6c2381d2011-10-19 02:52:5316#include "content/public/browser/notification_registrar.h"
[email protected]76a010b2008-12-07 23:48:0317
18class GURL;
19
[email protected]76a010b2008-12-07 23:48:0320// The handler for Javascript messages related to the "history" view.
[email protected]9f392932011-06-09 14:08:0021class BrowsingHistoryHandler : public WebUIMessageHandler,
[email protected]6c2381d2011-10-19 02:52:5322 public content::NotificationObserver {
[email protected]76a010b2008-12-07 23:48:0323 public:
[email protected]2bc2de62009-06-29 23:37:4224 BrowsingHistoryHandler();
[email protected]76a010b2008-12-07 23:48:0325 virtual ~BrowsingHistoryHandler();
26
[email protected]36e12172011-02-08 23:46:0227 // WebUIMessageHandler implementation.
[email protected]3abbed002011-08-01 16:02:2028 virtual WebUIMessageHandler* Attach(WebUI* web_ui) OVERRIDE;
29 virtual void RegisterMessages() OVERRIDE;
[email protected]2bc2de62009-06-29 23:37:4230
[email protected]76a010b2008-12-07 23:48:0331 // Callback for the "getHistory" message.
[email protected]f3a1c642011-07-12 19:15:0332 void HandleGetHistory(const base::ListValue* args);
[email protected]76a010b2008-12-07 23:48:0333
[email protected]fbf644e72009-02-19 22:26:0634 // Callback for the "searchHistory" message.
[email protected]f3a1c642011-07-12 19:15:0335 void HandleSearchHistory(const base::ListValue* args);
[email protected]fbf644e72009-02-19 22:26:0636
[email protected]21f4d2512010-03-05 08:15:5337 // Callback for the "removeURLsOnOneDay" message.
[email protected]f3a1c642011-07-12 19:15:0338 void HandleRemoveURLsOnOneDay(const base::ListValue* args);
[email protected]21f4d2512010-03-05 08:15:5339
40 // Handle for "clearBrowsingData" message.
[email protected]f3a1c642011-07-12 19:15:0341 void HandleClearBrowsingData(const base::ListValue* args);
[email protected]fbf644e72009-02-19 22:26:0642
[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]4d241a52011-06-06 15:32:2781class HistoryUI : public ChromeWebUI {
[email protected]76a010b2008-12-07 23:48:0382 public:
[email protected]57c6a652009-05-04 07:58:3483 explicit HistoryUI(TabContents* contents);
[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]6de27992009-10-19 17:04:4688 static 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_