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