Chromium Code Reviews| Index: chrome/browser/android/webapps/single_tab_mode_tab_helper.cc |
| diff --git a/chrome/browser/android/webapps/single_tab_mode_tab_helper.cc b/chrome/browser/android/webapps/single_tab_mode_tab_helper.cc |
| index 85f4755f4d300ac4d957b768728ad81174254ee1..d22f6b9b0738514b87ad365420dbc5fe0c1313ed 100644 |
| --- a/chrome/browser/android/webapps/single_tab_mode_tab_helper.cc |
| +++ b/chrome/browser/android/webapps/single_tab_mode_tab_helper.cc |
| @@ -4,103 +4,27 @@ |
| #include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h" |
| -#include "base/lazy_instance.h" |
| #include "chrome/browser/android/tab_android.h" |
| -#include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/render_frame_host.h" |
| -#include "content/public/browser/render_process_host.h" |
| #include "content/public/browser/web_contents.h" |
| DEFINE_WEB_CONTENTS_USER_DATA_KEY(SingleTabModeTabHelper); |
| -namespace { |
| - |
| -typedef std::pair<int32_t, int32_t> RenderFrameHostID; |
| -typedef std::set<RenderFrameHostID> SingleTabIDSet; |
| -base::LazyInstance<SingleTabIDSet>::DestructorAtExit g_blocked_ids = |
| - LAZY_INSTANCE_INITIALIZER; |
| - |
| -void AddPairOnIOThread(int32_t process_id, int32_t frame_routing_id) { |
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| - RenderFrameHostID single_tab_pair(process_id, frame_routing_id); |
| - g_blocked_ids.Get().insert(single_tab_pair); |
| -} |
| - |
| -void RemovePairOnIOThread(int32_t process_id, int32_t frame_routing_id) { |
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| - RenderFrameHostID single_tab_pair(process_id, frame_routing_id); |
| - SingleTabIDSet::iterator itr = g_blocked_ids.Get().find(single_tab_pair); |
| - DCHECK(itr != g_blocked_ids.Get().end()); |
| - g_blocked_ids.Get().erase(itr); |
| -} |
| - |
| -void AddPair(content::RenderFrameHost* render_frame_host) { |
| - if (!render_frame_host) |
| - return; |
| - |
| - int32_t process_id = render_frame_host->GetProcess()->GetID(); |
| - int32_t frame_routing_id = render_frame_host->GetRoutingID(); |
| - content::BrowserThread::PostTask( |
| - content::BrowserThread::IO, FROM_HERE, |
| - base::Bind(&AddPairOnIOThread, process_id, frame_routing_id)); |
| -} |
| - |
| -void RemovePair(content::RenderFrameHost* render_frame_host) { |
| - if (!render_frame_host) |
| - return; |
| - |
| - int32_t process_id = render_frame_host->GetProcess()->GetID(); |
| - int32_t frame_routing_id = render_frame_host->GetRoutingID(); |
| - content::BrowserThread::PostTask( |
| - content::BrowserThread::IO, FROM_HERE, |
| - base::Bind(&RemovePairOnIOThread, process_id, frame_routing_id)); |
| -} |
| - |
| -} // namespace |
| - |
| SingleTabModeTabHelper::SingleTabModeTabHelper( |
| content::WebContents* web_contents) |
| - : content::WebContentsObserver(web_contents), |
| - block_all_new_windows_(false) { |
| -} |
| - |
| -SingleTabModeTabHelper::~SingleTabModeTabHelper() { |
| -} |
| - |
| -void SingleTabModeTabHelper::RenderFrameCreated( |
| - content::RenderFrameHost* render_frame_host) { |
| - if (!block_all_new_windows_) |
| - return; |
| - AddPair(render_frame_host); |
| -} |
| + : web_contents_(web_contents) {} |
| -void SingleTabModeTabHelper::RenderFrameDeleted( |
| - content::RenderFrameHost* render_frame_host) { |
| - if (!block_all_new_windows_) |
| - return; |
| - RemovePair(render_frame_host); |
| -} |
| +SingleTabModeTabHelper::~SingleTabModeTabHelper() {} |
| void SingleTabModeTabHelper::PermanentlyBlockAllNewWindows() { |
| block_all_new_windows_ = true; |
| - for (content::RenderFrameHost* frame : web_contents()->GetAllFrames()) |
| - AddPair(frame); |
| -} |
| - |
| -bool SingleTabModeTabHelper::IsRegistered(int32_t process_id, |
| - int32_t frame_routing_id) { |
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| - RenderFrameHostID single_tab_pair(process_id, frame_routing_id); |
| - SingleTabIDSet::iterator itr = g_blocked_ids.Get().find(single_tab_pair); |
| - return itr != g_blocked_ids.Get().end(); |
| } |
| void SingleTabModeTabHelper::HandleOpenUrl(const BlockedWindowParams& params) { |
|
Bernhard Bauer
2017/04/24 13:05:30
It looks like that was already the case, but this
Charlie Harrison
2017/04/24 14:04:03
Done, mostly because this removes the web_contents
Bernhard Bauer
2017/04/24 14:31:35
Exactly :) Sadly, it doesn't look like base::Suppo
|
| - TabAndroid* tab = TabAndroid::FromWebContents(web_contents()); |
| + TabAndroid* tab = TabAndroid::FromWebContents(web_contents_); |
| if (!tab) |
| return; |
| chrome::NavigateParams nav_params = |
| - params.CreateNavigateParams(web_contents()); |
| + params.CreateNavigateParams(web_contents_); |
| tab->HandlePopupNavigation(&nav_params); |
| } |