OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/instant/instant_unload_handler.h" | 5 #include "chrome/browser/instant/instant_unload_handler.h" |
6 | 6 |
7 #include <algorithm> | |
8 | |
9 #include "chrome/browser/ui/browser.h" | |
10 #include "chrome/browser/ui/browser_navigator.h" | 7 #include "chrome/browser/ui/browser_navigator.h" |
11 #include "chrome/browser/ui/tab_contents/tab_contents.h" | 8 #include "chrome/browser/ui/tab_contents/tab_contents.h" |
12 #include "content/public/browser/render_view_host.h" | 9 #include "content/public/browser/render_view_host.h" |
13 #include "content/public/browser/web_contents.h" | 10 #include "content/public/browser/web_contents.h" |
14 #include "content/public/browser/web_contents_delegate.h" | 11 #include "content/public/browser/web_contents_delegate.h" |
15 | 12 |
16 // WebContentsDelegate implementation. This owns the TabContents supplied to the | 13 // WebContentsDelegate implementation. This owns the TabContents supplied to the |
17 // constructor. | 14 // constructor. |
18 class InstantUnloadHandler::WebContentsDelegateImpl | 15 class InstantUnloadHandler::WebContentsDelegateImpl |
19 : public content::WebContentsDelegate { | 16 : public content::WebContentsDelegate { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 } | 89 } |
93 | 90 |
94 void InstantUnloadHandler::Activate(WebContentsDelegateImpl* delegate) { | 91 void InstantUnloadHandler::Activate(WebContentsDelegateImpl* delegate) { |
95 // Take ownership of the TabContents from the delegate. | 92 // Take ownership of the TabContents from the delegate. |
96 TabContents* tab = delegate->ReleaseTab(); | 93 TabContents* tab = delegate->ReleaseTab(); |
97 chrome::NavigateParams params(browser_, tab); | 94 chrome::NavigateParams params(browser_, tab); |
98 params.disposition = NEW_FOREGROUND_TAB; | 95 params.disposition = NEW_FOREGROUND_TAB; |
99 params.tabstrip_index = delegate->index(); | 96 params.tabstrip_index = delegate->index(); |
100 | 97 |
101 // Remove (and delete) the delegate. | 98 // Remove (and delete) the delegate. |
102 ScopedVector<WebContentsDelegateImpl>::iterator i = | 99 Destroy(delegate); |
103 std::find(delegates_.begin(), delegates_.end(), delegate); | |
104 DCHECK(i != delegates_.end()); | |
105 delegates_.erase(i); | |
106 delegate = NULL; | |
107 | 100 |
108 // Add the tab back in. | 101 // Add the tab back in. |
109 chrome::Navigate(¶ms); | 102 chrome::Navigate(¶ms); |
110 } | 103 } |
111 | 104 |
112 void InstantUnloadHandler::Destroy(WebContentsDelegateImpl* delegate) { | 105 void InstantUnloadHandler::Destroy(WebContentsDelegateImpl* delegate) { |
113 ScopedVector<WebContentsDelegateImpl>::iterator i = | 106 ScopedVector<WebContentsDelegateImpl>::iterator i = |
114 std::find(delegates_.begin(), delegates_.end(), delegate); | 107 std::find(delegates_.begin(), delegates_.end(), delegate); |
115 DCHECK(i != delegates_.end()); | 108 DCHECK(i != delegates_.end()); |
116 delegates_.erase(i); | 109 delegates_.erase(i); |
117 } | 110 } |
OLD | NEW |