summaryrefslogtreecommitdiffstats
path: root/athena/content/app_activity.cc
diff options
context:
space:
mode:
Diffstat (limited to 'athena/content/app_activity.cc')
-rw-r--r--athena/content/app_activity.cc44
1 files changed, 28 insertions, 16 deletions
diff --git a/athena/content/app_activity.cc b/athena/content/app_activity.cc
index 6ce1fc2..da5f929 100644
--- a/athena/content/app_activity.cc
+++ b/athena/content/app_activity.cc
@@ -11,6 +11,7 @@
#include "athena/wm/public/window_list_provider.h"
#include "athena/wm/public/window_manager.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/browser/app_window/app_window.h"
#include "ui/aura/window.h"
#include "ui/views/controls/webview/webview.h"
#include "ui/views/widget/widget.h"
@@ -18,11 +19,14 @@
namespace athena {
// TODO(mukai): specifies the same accelerators of WebActivity.
-AppActivity::AppActivity(const std::string& app_id)
- : app_id_(app_id),
- web_view_(NULL),
+AppActivity::AppActivity(extensions::AppWindow* app_window,
+ views::WebView* web_view)
+ : app_id_(app_window->extension_id()),
+ web_view_(web_view),
current_state_(ACTIVITY_UNLOADED),
app_activity_registry_(NULL) {
+ DCHECK_EQ(app_window->web_contents(), web_view->GetWebContents());
+ Observe(app_window->web_contents());
}
scoped_ptr<ContentProxy> AppActivity::GetContentProxy(aura::Window* window) {
@@ -125,20 +129,21 @@ bool AppActivity::UsesFrame() const {
return false;
}
-views::View* AppActivity::GetContentsView() {
- if (!web_view_) {
- web_view_ = GetWebView();
- // Make sure the content gets properly shown.
- if (current_state_ == ACTIVITY_VISIBLE) {
- HideContentProxy();
- } else if (current_state_ == ACTIVITY_INVISIBLE) {
- ShowContentProxy();
- } else {
- // If not previously specified, we change the state now to invisible..
- SetCurrentState(ACTIVITY_INVISIBLE);
- }
- RegisterActivity();
+views::Widget* AppActivity::CreateWidget() {
+ // Make sure the content gets properly shown.
+ if (current_state_ == ACTIVITY_VISIBLE) {
+ HideContentProxy();
+ } else if (current_state_ == ACTIVITY_INVISIBLE) {
+ ShowContentProxy();
+ } else {
+ // If not previously specified, we change the state now to invisible..
+ SetCurrentState(ACTIVITY_INVISIBLE);
}
+ RegisterActivity();
+ return web_view_->GetWidget();
+}
+
+views::View* AppActivity::GetContentsView() {
return web_view_;
}
@@ -164,6 +169,13 @@ void AppActivity::ResetContentsView() {
}
}
+AppActivity::AppActivity(const std::string& app_id)
+ : app_id_(app_id),
+ web_view_(NULL),
+ current_state_(ACTIVITY_UNLOADED),
+ app_activity_registry_(NULL) {
+}
+
AppActivity::~AppActivity() {
// If this activity is registered, we unregister it now.
if (app_activity_registry_)