| Index: ios/chrome/browser/ui/history/history_service_facade.h
|
| diff --git a/ios/chrome/browser/ui/history/history_service_facade.h b/ios/chrome/browser/ui/history/history_service_facade.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bb371864a55d47cd682ab45e686f89b1edb2fb9e
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/history/history_service_facade.h
|
| @@ -0,0 +1,170 @@
|
| +// Copyright 2016 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 IOS_CHROME_BROWSER_UI_HISTORY_HISTORY_SERVICE_FACADE_H_
|
| +#define IOS_CHROME_BROWSER_UI_HISTORY_HISTORY_SERVICE_FACADE_H_
|
| +
|
| +#include <memory>
|
| +#include <string>
|
| +
|
| +#include "base/ios/weak_nsobject.h"
|
| +#include "base/macros.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/scoped_observer.h"
|
| +#include "base/strings/string16.h"
|
| +#include "base/task/cancelable_task_tracker.h"
|
| +#include "base/timer/timer.h"
|
| +#include "base/values.h"
|
| +#include "components/history/core/browser/history_service_observer.h"
|
| +#include "components/history/core/browser/url_row.h"
|
| +#include "components/history/core/browser/web_history_service.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace history {
|
| +struct HistoryEntry;
|
| +class HistoryService;
|
| +struct QueryOptions;
|
| +class QueryResults;
|
| +}
|
| +
|
| +namespace ios {
|
| +class ChromeBrowserState;
|
| +}
|
| +
|
| +@protocol HistoryServiceFacadeDelegate;
|
| +
|
| +// Facade for HistoryService and WebHistoryService. Handles history querying and
|
| +// deletion actions.
|
| +class HistoryServiceFacade : public history::HistoryServiceObserver {
|
| + public:
|
| + // Represents the result of a query to history service.
|
| + struct QueryResult {
|
| + QueryResult();
|
| + QueryResult(const QueryResult&);
|
| + ~QueryResult();
|
| + base::string16 query;
|
| + base::string16 query_start_time;
|
| + base::string16 query_end_time;
|
| + bool finished;
|
| + bool has_synced_results;
|
| + bool sync_finished;
|
| + std::vector<history::HistoryEntry> entries;
|
| + };
|
| +
|
| + // Represents a history entry removed by the client.
|
| + struct RemovedEntry {
|
| + RemovedEntry(const GURL& url, const base::Time& timestamp);
|
| + RemovedEntry(const GURL& url, const std::vector<base::Time>& timestamps);
|
| + RemovedEntry(const RemovedEntry&);
|
| + ~RemovedEntry();
|
| + GURL url;
|
| + std::vector<base::Time> timestamps;
|
| + };
|
| +
|
| + HistoryServiceFacade(ios::ChromeBrowserState* browser_state,
|
| + id<HistoryServiceFacadeDelegate> delegate);
|
| + ~HistoryServiceFacade() override;
|
| +
|
| + // Performs history query with query |search_text| and |options|;
|
| + void QueryHistory(const base::string16& search_text,
|
| + const history::QueryOptions& options);
|
| +
|
| + // Removes history entries in HistoryService and WebHistoryService.
|
| + void RemoveHistoryEntries(const std::vector<RemovedEntry>& entries);
|
| +
|
| + // Queries WebHistoryService to determine whether notice about other forms
|
| + // of browsing history should be shown. The response is returned via the
|
| + // historyServiceFacade:shouldShowNoticeAboutOtherFormsOfBrowsingHistory:
|
| + // delegate callback.
|
| + void QueryOtherFormsOfBrowsingHistory();
|
| +
|
| + private:
|
| + // The range for which to return results:
|
| + // - ALLTIME: allows access to all the results in a paginated way.
|
| + // - WEEK: the last 7 days.
|
| + // - MONTH: the last calendar month.
|
| + enum Range { ALL_TIME = 0, WEEK = 1, MONTH = 2 };
|
| +
|
| + // Callback from |web_history_timer_| when a response from web history has
|
| + // not been received in time.
|
| + void WebHistoryTimeout();
|
| +
|
| + // Callback from the history system when a history query has completed.
|
| + void QueryComplete(const base::string16& search_text,
|
| + const history::QueryOptions& options,
|
| + history::QueryResults* results);
|
| +
|
| + // Callback from the WebHistoryService when a query has completed.
|
| + void WebHistoryQueryComplete(const base::string16& search_text,
|
| + const history::QueryOptions& options,
|
| + base::TimeTicks start_time,
|
| + history::WebHistoryService::Request* request,
|
| + const base::DictionaryValue* results_value);
|
| +
|
| + // Callback from the history system when visits were deleted.
|
| + void RemoveComplete();
|
| +
|
| + // Callback from history server when visits were deleted.
|
| + void RemoveWebHistoryComplete(bool success);
|
| +
|
| + // Callback telling whether other forms of browsing history were found
|
| + // on the history server.
|
| + void OtherFormsOfBrowsingHistoryQueryComplete(
|
| + bool found_other_forms_of_browsing_history);
|
| +
|
| + // Combines the query results from the local history database and the history
|
| + // server, and sends the combined results to the front end.
|
| + void ReturnResultsToFrontEnd();
|
| +
|
| + // history::HistoryServiceObserver method.
|
| + void OnURLsDeleted(history::HistoryService* history_service,
|
| + bool all_history,
|
| + bool expired,
|
| + const history::URLRows& deleted_rows,
|
| + const std::set<GURL>& favicon_urls) override;
|
| +
|
| + // Tracker for search requests to the history service.
|
| + base::CancelableTaskTracker query_task_tracker_;
|
| +
|
| + // The currently-executing request for synced history results.
|
| + // Deleting the request will cancel it.
|
| + std::unique_ptr<history::WebHistoryService::Request> web_history_request_;
|
| +
|
| + // True if there is a pending delete requests to the history service.
|
| + bool has_pending_delete_request_;
|
| +
|
| + // Tracker for delete requests to the history service.
|
| + base::CancelableTaskTracker delete_task_tracker_;
|
| +
|
| + // The list of URLs that are in the process of being deleted.
|
| + std::set<GURL> urls_to_be_deleted_;
|
| +
|
| + // Information that is returned to the front end with the query results.
|
| + QueryResult results_info_value_;
|
| +
|
| + // The list of query results received from the history service.
|
| + std::vector<history::HistoryEntry> query_results_;
|
| +
|
| + // The list of query results received from the history server.
|
| + std::vector<history::HistoryEntry> web_history_query_results_;
|
| +
|
| + // Timer used to implement a timeout on a Web History response.
|
| + base::OneShotTimer web_history_timer_;
|
| +
|
| + // Observer for HistoryService.
|
| + ScopedObserver<history::HistoryService, history::HistoryServiceObserver>
|
| + history_service_observer_;
|
| +
|
| + // The current browser state.
|
| + ios::ChromeBrowserState* browser_state_; // weak
|
| +
|
| + // Delegate for HistoryServiceFacade. Serves as client for HistoryService.
|
| + base::WeakNSProtocol<id<HistoryServiceFacadeDelegate>> delegate_;
|
| +
|
| + base::WeakPtrFactory<HistoryServiceFacade> weak_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(HistoryServiceFacade);
|
| +};
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_HISTORY_HISTORY_SERVICE_FACADE_H_
|
|
|