app_activity.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
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_APP_ACTIVITY_H_
6#define ATHENA_CONTENT_APP_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#include "ui/gfx/image/image_skia.h"
12
13namespace extensions {
14class ShellAppWindow;
15}
16
17namespace views {
18class WebView;
19}
20
21namespace athena {
22
23class AppActivityRegistry;
24
25// The activity object for a hosted V2 application.
26class AppActivity : public Activity,
27                    public ActivityViewModel,
28                    public content::WebContentsObserver {
29 public:
30  explicit AppActivity(extensions::ShellAppWindow* app_window);
31  virtual ~AppActivity();
32
33  // Activity:
34  virtual athena::ActivityViewModel* GetActivityViewModel() OVERRIDE;
35  virtual void SetCurrentState(Activity::ActivityState state) OVERRIDE;
36  virtual ActivityState GetCurrentState() OVERRIDE;
37  virtual bool IsVisible() OVERRIDE;
38  virtual ActivityMediaState GetMediaState() OVERRIDE;
39  virtual aura::Window* GetWindow() OVERRIDE;
40
41  // ActivityViewModel:
42  virtual void Init() OVERRIDE;
43  virtual SkColor GetRepresentativeColor() const OVERRIDE;
44  virtual base::string16 GetTitle() const OVERRIDE;
45  virtual bool UsesFrame() const OVERRIDE;
46  virtual views::View* GetContentsView() OVERRIDE;
47  virtual void CreateOverviewModeImage() OVERRIDE;
48  virtual gfx::ImageSkia GetOverviewModeImage() OVERRIDE;
49
50 protected:
51  // content::WebContentsObserver:
52  virtual void TitleWasSet(content::NavigationEntry* entry,
53                           bool explicit_set) OVERRIDE;
54  virtual void DidUpdateFaviconURL(
55      const std::vector<content::FaviconURL>& candidates) OVERRIDE;
56  virtual void DidStartNavigationToPendingEntry(
57        const GURL& url,
58        content::NavigationController::ReloadType reload_type) OVERRIDE;
59
60 private:
61  // Register this activity with its application.
62  void RegisterActivity();
63
64  scoped_ptr<extensions::ShellAppWindow> app_window_;
65  views::WebView* web_view_;
66
67  // The current state for this activity.
68  ActivityState current_state_;
69
70  // The image which will be used in overview mode.
71  gfx::ImageSkia overview_mode_image_;
72
73  // If known the registry which holds all activities for the associated app.
74  // This object is owned by |AppRegistry| and will be a valid pointer as long
75  // as this object lives.
76  AppActivityRegistry* app_activity_registry_;
77
78  DISALLOW_COPY_AND_ASSIGN(AppActivity);
79};
80
81}  // namespace athena
82
83#endif  // ATHENA_CONTENT_APP_ACTIVITY_H_
84