Index: athena/content/app_activity.cc |
diff --git a/athena/content/app_activity.cc b/athena/content/app_activity.cc |
deleted file mode 100644 |
index b8b1c5fa22037a7bf7134f70ef64d48a3ba723f0..0000000000000000000000000000000000000000 |
--- a/athena/content/app_activity.cc |
+++ /dev/null |
@@ -1,255 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "athena/content/app_activity.h" |
- |
-#include "athena/activity/public/activity_manager.h" |
-#include "athena/activity/public/activity_view.h" |
-#include "athena/content/app_activity_registry.h" |
-#include "athena/content/content_proxy.h" |
-#include "athena/content/media_utils.h" |
-#include "athena/content/public/app_registry.h" |
-#include "athena/wm/public/window_list_provider.h" |
-#include "athena/wm/public/window_manager.h" |
-#include "content/public/browser/web_contents.h" |
-#include "ui/aura/window.h" |
-#include "ui/views/controls/webview/webview.h" |
-#include "ui/views/widget/widget.h" |
-#include "ui/wm/core/window_util.h" |
- |
-namespace athena { |
- |
-// TODO(mukai): specifies the same accelerators of WebActivity. |
-AppActivity::AppActivity(const std::string& app_id, views::WebView* web_view) |
- : app_id_(app_id), |
- web_view_(web_view), |
- current_state_(ACTIVITY_UNLOADED), |
- app_activity_registry_(nullptr), |
- activity_view_(nullptr) { |
- Observe(web_view->GetWebContents()); |
-} |
- |
-scoped_ptr<ContentProxy> AppActivity::GetContentProxy() { |
- // Note: After this call, the content is still valid because the contents |
- // destruction will destroy this |AppActivity| object. |
- if (content_proxy_.get()) |
- content_proxy_->OnPreContentDestroyed(); |
- return content_proxy_.Pass(); |
-} |
- |
-ActivityViewModel* AppActivity::GetActivityViewModel() { |
- return this; |
-} |
- |
-void AppActivity::SetCurrentState(Activity::ActivityState state) { |
- DCHECK_NE(state, current_state_); |
- ActivityState current_state = current_state_; |
- // Remember the last requested state now so that a call to GetCurrentState() |
- // returns the new state. |
- current_state_ = state; |
- |
- switch (state) { |
- case ACTIVITY_VISIBLE: |
- HideContentProxy(); |
- return; |
- case ACTIVITY_INVISIBLE: |
- if (current_state == ACTIVITY_VISIBLE) |
- ShowContentProxy(); |
- break; |
- case ACTIVITY_BACKGROUND_LOW_PRIORITY: |
- DCHECK(ACTIVITY_VISIBLE == current_state || |
- ACTIVITY_INVISIBLE == current_state); |
- // TODO(skuhne): Do this. |
- break; |
- case ACTIVITY_PERSISTENT: |
- DCHECK_EQ(ACTIVITY_BACKGROUND_LOW_PRIORITY, current_state); |
- // TODO(skuhne): Do this. |
- break; |
- case ACTIVITY_UNLOADED: |
- DCHECK_NE(ACTIVITY_UNLOADED, current_state); |
- // This will cause the application to shut down, close its windows and |
- // delete this object. Instead a |AppActivityProxy| will be created as |
- // place holder. |
- if (app_activity_registry_) |
- app_activity_registry_->Unload(); |
- break; |
- } |
-} |
- |
-Activity::ActivityState AppActivity::GetCurrentState() { |
- DCHECK(web_view_ || ACTIVITY_UNLOADED == current_state_); |
- return current_state_; |
-} |
- |
-bool AppActivity::IsVisible() { |
- return web_view_ && |
- web_view_->visible() && |
- current_state_ != ACTIVITY_UNLOADED; |
-} |
- |
-Activity::ActivityMediaState AppActivity::GetMediaState() { |
- return current_state_ == ACTIVITY_UNLOADED ? |
- Activity::ACTIVITY_MEDIA_STATE_NONE : |
- GetActivityMediaState(GetWebContents()); |
-} |
- |
-aura::Window* AppActivity::GetWindow() { |
- return web_view_ && web_view_->GetWidget() |
- ? web_view_->GetWidget()->GetNativeWindow() |
- : nullptr; |
-} |
- |
-content::WebContents* AppActivity::GetWebContents() { |
- return !web_view_ ? nullptr : web_view_->GetWebContents(); |
-} |
- |
-void AppActivity::Init() { |
- // Before we remove the proxy, we have to register the activity and |
- // initialize its to move it to the proper activity list location. |
- RegisterActivity(); |
- |
- DCHECK(app_activity_registry_); |
- Activity* app_proxy = app_activity_registry_->unloaded_activity_proxy(); |
- if (app_proxy) { |
- // Note: At this time the |AppActivity| did not get registered to the |
- // |ResourceManager| - so we can move it around if needed. |
- WindowListProvider* window_list_provider = |
- WindowManager::Get()->GetWindowListProvider(); |
- // TODO(skuhne): After the decision is made how we want to handle visibility |
- // transitions (issue 421680) this code might change. |
- // If the proxy was the active window, its deletion will cause a window |
- // reordering since the next activatable window in line will move up to the |
- // front. Since the application window is still hidden at this time, it is |
- // not yet activatable and the window behind it will move to the front. |
- if (wm::IsActiveWindow(app_proxy->GetWindow())) { |
- // Delete the proxy window first and then move the new window to the top |
- // of the stack, replacing the proxy window. Note that by deleting the |
- // proxy the activation will change to the next (activatable) object and |
- // thus we have to move the window in front at the end. |
- Activity::Delete(app_proxy); |
- if (GetWindow() != window_list_provider->GetWindowList().back()) { |
- window_list_provider->StackWindowFrontOf( |
- GetWindow(), |
- window_list_provider->GetWindowList().back()); |
- } |
- } else { |
- // The app window goes in front of the proxy window (we need to first |
- // place the window before we can delete it). |
- window_list_provider->StackWindowFrontOf(GetWindow(), |
- app_proxy->GetWindow()); |
- Activity::Delete(app_proxy); |
- } |
- // The proxy should now be deleted. |
- DCHECK(!app_activity_registry_->unloaded_activity_proxy()); |
- } |
- |
- // 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); |
- } |
-} |
- |
-SkColor AppActivity::GetRepresentativeColor() const { |
- // TODO(sad): Compute the color from the favicon. |
- return SK_ColorGRAY; |
-} |
- |
-base::string16 AppActivity::GetTitle() const { |
- return web_view_->GetWebContents()->GetTitle(); |
-} |
- |
-gfx::ImageSkia AppActivity::GetIcon() const { |
- return gfx::ImageSkia(); |
-} |
- |
-void AppActivity::SetActivityView(ActivityView* view) { |
- DCHECK(!activity_view_); |
- activity_view_ = view; |
-} |
- |
-bool AppActivity::UsesFrame() const { |
- return false; |
-} |
- |
-views::View* AppActivity::GetContentsView() { |
- return web_view_; |
-} |
- |
-gfx::ImageSkia AppActivity::GetOverviewModeImage() { |
- if (content_proxy_.get()) |
- return content_proxy_->GetContentImage(); |
- return gfx::ImageSkia(); |
-} |
- |
-void AppActivity::PrepareContentsForOverview() { |
- // Turn on fast resizing to avoid re-laying out the web contents when |
- // entering / exiting overview mode and the content is visible. |
- if (!content_proxy_.get()) |
- web_view_->SetFastResize(true); |
-} |
- |
-void AppActivity::ResetContentsView() { |
- // Turn on fast resizing to avoid re-laying out the web contents when |
- // entering / exiting overview mode and the content is visible. |
- if (!content_proxy_.get()) { |
- web_view_->SetFastResize(false); |
- web_view_->Layout(); |
- } |
-} |
- |
-AppActivity::AppActivity(const std::string& app_id) |
- : app_id_(app_id), |
- web_view_(nullptr), |
- current_state_(ACTIVITY_UNLOADED), |
- app_activity_registry_(nullptr), |
- activity_view_(nullptr) { |
-} |
- |
-AppActivity::~AppActivity() { |
- // If this activity is registered, we unregister it now. |
- if (app_activity_registry_) |
- app_activity_registry_->UnregisterAppActivity(this); |
-} |
- |
-void AppActivity::TitleWasSet(content::NavigationEntry* entry, |
- bool explicit_set) { |
- if (activity_view_) |
- activity_view_->UpdateTitle(); |
-} |
- |
-void AppActivity::DidUpdateFaviconURL( |
- const std::vector<content::FaviconURL>& candidates) { |
- if (activity_view_) |
- activity_view_->UpdateIcon(); |
-} |
- |
-// Register an |activity| with an application. |
-// Note: This should only get called once for an |app_window| of the |
-// |activity|. |
-void AppActivity::RegisterActivity() { |
- content::WebContents* web_contents = web_view_->GetWebContents(); |
- AppRegistry* app_registry = AppRegistry::Get(); |
- // Get the application's registry. |
- app_activity_registry_ = app_registry->GetAppActivityRegistry( |
- app_id_, web_contents->GetBrowserContext()); |
- DCHECK(app_activity_registry_); |
- // Register the activity. |
- app_activity_registry_->RegisterAppActivity(this); |
-} |
- |
-void AppActivity::HideContentProxy() { |
- content_proxy_.reset(); |
-} |
- |
-void AppActivity::ShowContentProxy() { |
- if (!content_proxy_.get() && web_view_) |
- content_proxy_.reset(new ContentProxy(web_view_)); |
-} |
- |
-} // namespace athena |