• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_
6 #define COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_
7 
8 #include "base/memory/ref_counted.h"
9 
10 class GURL;
11 
12 namespace content {
13 class BrowserContext;
14 }
15 
16 namespace visitedlink {
17 
18 // Delegate class that clients of VisitedLinkMaster must implement.
19 class VisitedLinkDelegate {
20  public:
21   // See RebuildTable.
22   class URLEnumerator : public base::RefCountedThreadSafe<URLEnumerator> {
23    public:
24     // Call this with each URL to rebuild the table.
25     virtual void OnURL(const GURL& url) = 0;
26 
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;
31 
32    protected:
~URLEnumerator()33     virtual ~URLEnumerator() {}
34 
35    private:
36     friend class base::RefCountedThreadSafe<URLEnumerator>;
37   };
38 
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;
44 
45  protected:
~VisitedLinkDelegate()46   virtual ~VisitedLinkDelegate() {}
47 };
48 
49 }  // namespace visitedlink
50 
51 #endif  // COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_
52