1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_
6 #define COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_
8 #include "base/memory/ref_counted.h"
16 namespace visitedlink
{
18 // Delegate class that clients of VisitedLinkMaster must implement.
19 class VisitedLinkDelegate
{
22 class URLEnumerator
: public base::RefCountedThreadSafe
<URLEnumerator
> {
24 // Call this with each URL to rebuild the table.
25 virtual void OnURL(const GURL
& url
) = 0;
27 // This must be called by Delegate after RebuildTable is called. |success|
28 // indicates all URLs have been returned successfully. The URLEnumerator
29 // object cannot be used by the delegate after this call.
30 virtual void OnComplete(bool success
) = 0;
33 virtual ~URLEnumerator() {}
36 friend class base::RefCountedThreadSafe
<URLEnumerator
>;
39 // Delegate class is responsible for persisting the list of visited URLs
40 // across browser runs. This is called by VisitedLinkMaster to repopulate
41 // its internal table. Note that methods on enumerator can be called on any
42 // thread but the delegate is responsible for synchronizating the calls.
43 virtual void RebuildTable(const scoped_refptr
<URLEnumerator
>& enumerator
) = 0;
46 virtual ~VisitedLinkDelegate() {}
49 } // namespace visitedlink
51 #endif // COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_