- add sources.
[platform/framework/web/crosswalk.git] / src / components / visitedlink / browser / visitedlink_delegate.h
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:
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:
46   virtual ~VisitedLinkDelegate() {}
47 };
48
49 }  // namespace visitedlink
50
51 #endif  // COMPONENTS_VISITEDLINK_BROWSER_VISITEDLINK_DELEGATE_H_