blob: b576e79a1775012aecce0b58b00f248f7a48750b [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]5581d762011-12-27 14:05:2412#include "chrome/browser/cancelable_request.h"
[email protected]b689fce72009-03-17 22:45:3413#include "chrome/browser/history/history.h"
[email protected]fd42ac30f2011-02-27 19:33:3614#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
[email protected]21e6caf82012-01-06 23:44:2015#include "content/browser/webui/web_ui.h"
[email protected]6c2381d2011-10-19 02:52:5316#include "content/public/browser/notification_registrar.h"
[email protected]e14c959122012-01-13 16:58:2517#include "content/public/browser/web_ui_controller.h"
[email protected]26e2632a2011-12-31 04:02:5518#include "content/public/browser/web_ui_message_handler.h"
[email protected]76a010b2008-12-07 23:48:0319
[email protected]76a010b2008-12-07 23:48:0320// The handler for Javascript messages related to the "history" view.
[email protected]26e2632a2011-12-31 04:02:5521class BrowsingHistoryHandler : public content::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 void RegisterMessages() OVERRIDE;
[email protected]2bc2de62009-06-29 23:37:4229
[email protected]76a010b2008-12-07 23:48:0330 // Callback for the "getHistory" message.
[email protected]f3a1c642011-07-12 19:15:0331 void HandleGetHistory(const base::ListValue* args);
[email protected]76a010b2008-12-07 23:48:0332
[email protected]fbf644e72009-02-19 22:26:0633 // Callback for the "searchHistory" message.
[email protected]f3a1c642011-07-12 19:15:0334 void HandleSearchHistory(const base::ListValue* args);
[email protected]fbf644e72009-02-19 22:26:0635
[email protected]21f4d2512010-03-05 08:15:5336 // Callback for the "removeURLsOnOneDay" message.
[email protected]f3a1c642011-07-12 19:15:0337 void HandleRemoveURLsOnOneDay(const base::ListValue* args);
[email protected]21f4d2512010-03-05 08:15:5338
39 // Handle for "clearBrowsingData" message.
[email protected]f3a1c642011-07-12 19:15:0340 void HandleClearBrowsingData(const base::ListValue* args);
[email protected]fbf644e72009-02-19 22:26:0641
[email protected]6c2381d2011-10-19 02:52:5342 // content::NotificationObserver implementation.
[email protected]432115822011-07-10 15:52:2743 virtual void Observe(int type,
[email protected]6c2381d2011-10-19 02:52:5344 const content::NotificationSource& source,
45 const content::NotificationDetails& details) OVERRIDE;
[email protected]9f392932011-06-09 14:08:0046
[email protected]76a010b2008-12-07 23:48:0347 private:
[email protected]fbf644e72009-02-19 22:26:0648 // Callback from the history system when the history list is available.
[email protected]76a010b2008-12-07 23:48:0349 void QueryComplete(HistoryService::Handle request_handle,
50 history::QueryResults* results);
51
[email protected]21f4d2512010-03-05 08:15:5352 // Callback from the history system when visits were deleted.
53 void RemoveComplete();
54
[email protected]fbf644e72009-02-19 22:26:0655 // Extract the arguments from the call to HandleSearchHistory.
[email protected]f3a1c642011-07-12 19:15:0356 void ExtractSearchHistoryArguments(const base::ListValue* args,
[email protected]f0a51fb52009-03-05 12:46:3857 int* month,
[email protected]e53668962010-06-23 15:35:2558 string16* query);
[email protected]76a010b2008-12-07 23:48:0359
[email protected]fbf644e72009-02-19 22:26:0660 // Figure out the query options for a month-wide query.
61 history::QueryOptions CreateMonthQueryOptions(int month);
[email protected]76a010b2008-12-07 23:48:0362
[email protected]6c2381d2011-10-19 02:52:5363 content::NotificationRegistrar registrar_;
[email protected]9f392932011-06-09 14:08:0064
[email protected]76a010b2008-12-07 23:48:0365 // Current search text.
[email protected]e53668962010-06-23 15:35:2566 string16 search_text_;
[email protected]76a010b2008-12-07 23:48:0367
[email protected]b660ea9f2010-05-31 07:55:5168 // Our consumer for search requests to the history service.
69 CancelableRequestConsumerT<int, 0> cancelable_search_consumer_;
70
71 // Our consumer for delete requests to the history service.
72 CancelableRequestConsumerT<int, 0> cancelable_delete_consumer_;
[email protected]76a010b2008-12-07 23:48:0373
[email protected]d66bbe02011-11-16 10:19:4374 // The list of URLs that are in the process of being deleted.
75 std::set<GURL> urls_to_be_deleted_;
76
[email protected]76a010b2008-12-07 23:48:0377 DISALLOW_COPY_AND_ASSIGN(BrowsingHistoryHandler);
78};
79
[email protected]e14c959122012-01-13 16:58:2580class HistoryUI : public WebUI, public content::WebUIController {
[email protected]76a010b2008-12-07 23:48:0381 public:
[email protected]0ec4898e2011-12-30 21:09:2482 explicit HistoryUI(content::WebContents* contents);
[email protected]76a010b2008-12-07 23:48:0383
[email protected]9e4c0332009-02-25 17:47:5884 // Return the URL for a given search term.
[email protected]e53668962010-06-23 15:35:2585 static const GURL GetHistoryURLWithSearchText(const string16& text);
[email protected]9e4c0332009-02-25 17:47:5886
[email protected]6de27992009-10-19 17:04:4687 static RefCountedMemory* GetFaviconResourceBytes();
[email protected]0189bc722009-08-28 21:56:4888
[email protected]76a010b2008-12-07 23:48:0389 private:
[email protected]76a010b2008-12-07 23:48:0390 DISALLOW_COPY_AND_ASSIGN(HistoryUI);
91};
92
[email protected]265a1492011-02-27 05:58:0793#endif // CHROME_BROWSER_UI_WEBUI_HISTORY_UI_H_