Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3768)

Unified Diff: athena/content/web_activity.cc

Issue 659113002: Fix window.close() in Athena (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass the activity object instead of finding from the activity manager. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: athena/content/web_activity.cc
diff --git a/athena/content/web_activity.cc b/athena/content/web_activity.cc
index 6f3f31c510d33dfa6b584b99db28236c14321cf8..aedb9f13bda26d6926ff214397fb03a23e2b626b 100644
--- a/athena/content/web_activity.cc
+++ b/athena/content/web_activity.cc
@@ -47,8 +47,11 @@ class WebActivityController : public AcceleratorHandler {
CMD_STOP,
};
- explicit WebActivityController(views::WebView* web_view)
- : web_view_(web_view), reserved_accelerator_enabled_(true) {}
+ explicit WebActivityController(WebActivity* owner_activity,
+ views::WebView* web_view)
+ : owner_activity_(owner_activity),
+ web_view_(web_view),
+ reserved_accelerator_enabled_(true) {}
virtual ~WebActivityController() {}
// Installs accelerators for web activity.
@@ -136,7 +139,7 @@ class WebActivityController : public AcceleratorHandler {
web_view_->GetWebContents()->GetController().GoForward();
return true;
case CMD_CLOSE:
- web_view_->GetWidget()->Close();
+ Activity::Delete(owner_activity_);
return true;
case CMD_STOP:
web_view_->GetWebContents()->Stop();
@@ -145,6 +148,7 @@ class WebActivityController : public AcceleratorHandler {
return false;
}
+ Activity* const owner_activity_;
views::WebView* web_view_;
bool reserved_accelerator_enabled_;
scoped_ptr<AcceleratorManager> accelerator_manager_;
@@ -164,9 +168,11 @@ const float kDistanceReload = 150;
// own content so that it can eject and reload it.
class AthenaWebView : public views::WebView {
public:
- explicit AthenaWebView(content::BrowserContext* context)
+ explicit AthenaWebView(content::BrowserContext* context,
+ WebActivity* owner_activity)
: views::WebView(context),
- controller_(new WebActivityController(this)),
+ controller_(new WebActivityController(owner_activity, this)),
+ owner_activity_(owner_activity),
fullscreen_(false),
overscroll_y_(0) {
SetEmbedFullscreenWidgetMode(true);
@@ -174,9 +180,11 @@ class AthenaWebView : public views::WebView {
// content status to unloaded if that happens.
}
- AthenaWebView(content::WebContents* web_contents)
+ AthenaWebView(content::WebContents* web_contents,
+ WebActivity* owner_activity)
: views::WebView(web_contents->GetBrowserContext()),
- controller_(new WebActivityController(this)) {
+ controller_(new WebActivityController(owner_activity, this)),
+ owner_activity_(owner_activity) {
scoped_ptr<content::WebContents> old_contents(
SwapWebContents(scoped_ptr<content::WebContents>(web_contents)));
}
@@ -370,6 +378,10 @@ class AthenaWebView : public views::WebView {
return athena::OpenFileChooser(web_contents, params);
}
+ virtual void CloseContents(content::WebContents* contents) override {
+ Activity::Delete(owner_activity_);
+ }
+
private:
void CreateProgressBar() {
CHECK(!progress_bar_);
@@ -398,6 +410,8 @@ class AthenaWebView : public views::WebView {
scoped_ptr<WebActivityController> controller_;
+ Activity* const owner_activity_;
+
// If the activity got evicted, this is the web content which holds the known
// state of the content before eviction.
scoped_ptr<content::WebContents> evicted_web_contents_;
@@ -420,7 +434,7 @@ WebActivity::WebActivity(content::BrowserContext* browser_context,
const base::string16& title,
const GURL& url)
: browser_context_(browser_context),
- web_view_(new AthenaWebView(browser_context)),
+ web_view_(new AthenaWebView(browser_context, this)),
title_(title),
title_color_(kDefaultTitleColor),
current_state_(ACTIVITY_UNLOADED),
@@ -433,7 +447,7 @@ WebActivity::WebActivity(content::BrowserContext* browser_context,
WebActivity::WebActivity(content::WebContents* contents)
: browser_context_(contents->GetBrowserContext()),
- web_view_(new AthenaWebView(contents)),
+ web_view_(new AthenaWebView(contents, this)),
title_color_(kDefaultTitleColor),
current_state_(ACTIVITY_UNLOADED),
weak_ptr_factory_(this) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698