1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "athena/content/app_activity.h" 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "athena/activity/public/activity_manager.h" 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/content/app_activity_registry.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "athena/content/content_proxy.h" 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/content/public/app_registry.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "athena/wm/public/window_list_provider.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "athena/wm/public/window_manager.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/public/browser/web_contents.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/app_window/app_window.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/aura/window.h" 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/views/controls/webview/webview.h" 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/views/widget/widget.h" 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace athena { 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// TODO(mukai): specifies the same accelerators of WebActivity. 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAppActivity::AppActivity(extensions::AppWindow* app_window, 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci views::WebView* web_view) 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : app_id_(app_window->extension_id()), 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_view_(web_view), 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) current_state_(ACTIVITY_UNLOADED), 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) app_activity_registry_(NULL) { 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_EQ(app_window->web_contents(), web_view->GetWebContents()); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Observe(app_window->web_contents()); 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<ContentProxy> AppActivity::GetContentProxy() { 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Note: After this call, the content is still valid because the contents 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // destruction will destroy this |AppActivity| object. 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (content_proxy_.get()) 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content_proxy_->OnPreContentDestroyed(); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return content_proxy_.Pass(); 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)ActivityViewModel* AppActivity::GetActivityViewModel() { 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return this; 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid AppActivity::SetCurrentState(Activity::ActivityState state) { 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_NE(state, current_state_); 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ActivityState current_state = current_state_; 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Remember the last requested state now so that a call to GetCurrentState() 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // returns the new state. 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) current_state_ = state; 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switch (state) { 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case ACTIVITY_VISIBLE: 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HideContentProxy(); 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case ACTIVITY_INVISIBLE: 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (current_state == ACTIVITY_VISIBLE) 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShowContentProxy(); 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case ACTIVITY_BACKGROUND_LOW_PRIORITY: 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DCHECK(ACTIVITY_VISIBLE == current_state || 6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ACTIVITY_INVISIBLE == current_state); 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO(skuhne): Do this. 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case ACTIVITY_PERSISTENT: 6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DCHECK_EQ(ACTIVITY_BACKGROUND_LOW_PRIORITY, current_state); 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO(skuhne): Do this. 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case ACTIVITY_UNLOADED: 6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DCHECK_NE(ACTIVITY_UNLOADED, current_state); 7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // This will cause the application to shut down, close its windows and 7103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // delete this object. Instead a |AppActivityProxy| will be created as 7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // place holder. 7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (app_activity_registry_) 7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) app_activity_registry_->Unload(); 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 79116680a4aac90f2aa7413d9095a592090648e557Ben MurdochActivity::ActivityState AppActivity::GetCurrentState() { 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(web_view_ || ACTIVITY_UNLOADED == current_state_); 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return current_state_; 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool AppActivity::IsVisible() { 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return web_view_ && 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_view_->visible() && 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci current_state_ != ACTIVITY_UNLOADED; 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 90116680a4aac90f2aa7413d9095a592090648e557Ben MurdochActivity::ActivityMediaState AppActivity::GetMediaState() { 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO(skuhne): The function GetTabMediaStateForContents(WebContents), 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // and the AudioStreamMonitor needs to be moved from Chrome into contents to 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // make it more modular and so that we can use it from here. 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return Activity::ACTIVITY_MEDIA_STATE_NONE; 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)aura::Window* AppActivity::GetWindow() { 9803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return !web_view_ ? NULL : web_view_->GetWidget()->GetNativeWindow(); 9903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 10003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicontent::WebContents* AppActivity::GetWebContents() { 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return !web_view_ ? NULL : web_view_->GetWebContents(); 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void AppActivity::Init() { 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(app_activity_registry_); 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Activity* app_proxy = app_activity_registry_->unloaded_activity_proxy(); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (app_proxy) { 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Note: At this time the |AppActivity| did not get registered to the 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // |ResourceManager| - so we can move it around if needed. 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci WindowListProvider* window_list_provider = 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci WindowManager::Get()->GetWindowListProvider(); 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window_list_provider->StackWindowFrontOf(app_proxy->GetWindow(), 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetWindow()); 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Activity::Delete(app_proxy); 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // With the removal the object, the proxy should be deleted. 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(!app_activity_registry_->unloaded_activity_proxy()); 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 119f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 120f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 121116680a4aac90f2aa7413d9095a592090648e557Ben MurdochSkColor AppActivity::GetRepresentativeColor() const { 122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // TODO(sad): Compute the color from the favicon. 123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return SK_ColorGRAY; 124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbase::string16 AppActivity::GetTitle() const { 127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return web_view_->GetWebContents()->GetTitle(); 128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 129f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccigfx::ImageSkia AppActivity::GetIcon() const { 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return gfx::ImageSkia(); 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool AppActivity::UsesFrame() const { 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return false; 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciviews::Widget* AppActivity::CreateWidget() { 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Make sure the content gets properly shown. 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (current_state_ == ACTIVITY_VISIBLE) { 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HideContentProxy(); 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else if (current_state_ == ACTIVITY_INVISIBLE) { 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ShowContentProxy(); 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // If not previously specified, we change the state now to invisible.. 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetCurrentState(ACTIVITY_INVISIBLE); 147f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RegisterActivity(); 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return web_view_->GetWidget(); 150f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 151f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciviews::View* AppActivity::GetContentsView() { 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return web_view_; 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdochgfx::ImageSkia AppActivity::GetOverviewModeImage() { 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (content_proxy_.get()) 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return content_proxy_->GetContentImage(); 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return gfx::ImageSkia(); 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AppActivity::PrepareContentsForOverview() { 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Turn on fast resizing to avoid re-laying out the web contents when 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // entering / exiting overview mode and the content is visible. 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!content_proxy_.get()) 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_view_->SetFastResize(true); 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AppActivity::ResetContentsView() { 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Turn on fast resizing to avoid re-laying out the web contents when 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // entering / exiting overview mode and the content is visible. 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!content_proxy_.get()) { 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_view_->SetFastResize(false); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_view_->Layout(); 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAppActivity::AppActivity(const std::string& app_id) 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : app_id_(app_id), 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_view_(NULL), 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci current_state_(ACTIVITY_UNLOADED), 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci app_activity_registry_(NULL) { 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAppActivity::~AppActivity() { 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // If this activity is registered, we unregister it now. 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (app_activity_registry_) 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci app_activity_registry_->UnregisterAppActivity(this); 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 191f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void AppActivity::TitleWasSet(content::NavigationEntry* entry, 192f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool explicit_set) { 193f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ActivityManager::Get()->UpdateActivity(this); 194f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 195f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void AppActivity::DidUpdateFaviconURL( 197f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const std::vector<content::FaviconURL>& candidates) { 198f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ActivityManager::Get()->UpdateActivity(this); 199f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 20103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Register an |activity| with an application. 20203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Note: This should only get called once for an |app_window| of the 20303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// |activity|. 20403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void AppActivity::RegisterActivity() { 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::WebContents* web_contents = web_view_->GetWebContents(); 20603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) AppRegistry* app_registry = AppRegistry::Get(); 20703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Get the application's registry. 20803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) app_activity_registry_ = app_registry->GetAppActivityRegistry( 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci app_id_, web_contents->GetBrowserContext()); 21003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DCHECK(app_activity_registry_); 21103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Register the activity. 21203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) app_activity_registry_->RegisterAppActivity(this); 21303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 21403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AppActivity::HideContentProxy() { 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content_proxy_.reset(); 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AppActivity::ShowContentProxy() { 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!content_proxy_.get() && web_view_) 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content_proxy_.reset(new ContentProxy(web_view_, this)); 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 224f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace athena 225