web_activity.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
1// Copyright 2014 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 ATHENA_CONTENT_PUBLIC_WEB_ACTIVITY_H_
6#define ATHENA_CONTENT_PUBLIC_WEB_ACTIVITY_H_
7
8#include "athena/activity/public/activity.h"
9#include "athena/activity/public/activity_view_model.h"
10#include "content/public/browser/web_contents_observer.h"
11
12namespace content {
13class BrowserContext;
14}
15
16namespace views {
17class WebView;
18}
19
20namespace athena {
21
22class WebActivity : public Activity,
23                    public ActivityViewModel,
24                    public content::WebContentsObserver {
25 public:
26  WebActivity(content::BrowserContext* context, const GURL& gurl);
27  virtual ~WebActivity();
28
29 protected:
30  // Activity:
31  virtual athena::ActivityViewModel* GetActivityViewModel() OVERRIDE;
32
33  // ActivityViewModel:
34  virtual SkColor GetRepresentativeColor() OVERRIDE;
35  virtual std::string GetTitle() OVERRIDE;
36  virtual views::View* GetContentsView() OVERRIDE;
37
38  // content::WebContentsObserver:
39  virtual void TitleWasSet(content::NavigationEntry* entry,
40                           bool explicit_set) OVERRIDE;
41  virtual void DidUpdateFaviconURL(
42      const std::vector<content::FaviconURL>& candidates) OVERRIDE;
43
44 private:
45  content::BrowserContext* browser_context_;
46  const GURL url_;
47  views::WebView* web_view_;
48
49  DISALLOW_COPY_AND_ASSIGN(WebActivity);
50};
51
52}  // namespace athena
53
54#endif  // ATHENA_CONTENT_WEB_ACTIVITY_H_
55