Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #import "ios/chrome/browser/web/sad_tab_tab_helper.h" | |
| 6 | |
| 7 #import <Foundation/Foundation.h> | |
| 8 | |
| 9 #import "base/strings/sys_string_conversions.h" | |
| 10 #import "ios/chrome/browser/ui/sad_tab/sad_tab_view.h" | |
| 11 #import "ios/web/public/navigation_manager.h" | |
| 12 #import "ios/web/public/web_state/ui/crw_generic_content_view.h" | |
| 13 | |
| 14 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
| 15 #error "This file requires ARC support." | |
| 16 #endif | |
| 17 | |
| 18 DEFINE_WEB_STATE_USER_DATA_KEY(SadTabTabHelper); | |
| 19 | |
| 20 NSString* const SadTabTabHelperID = @"SadTabTabHelper"; | |
| 21 | |
| 22 SadTabTabHelper::SadTabTabHelper(web::WebState* web_state, | |
| 23 id<SadTabTabHelperDelegate> delegate) | |
| 24 : web::WebStateObserver(web_state) { | |
|
kkhorimoto
2017/04/11 02:13:15
You can use initialization lists to set |delegate_
PL
2017/04/11 03:08:56
Done! (That's cool).
| |
| 25 delegate_ = delegate; | |
| 26 } | |
| 27 | |
| 28 SadTabTabHelper::~SadTabTabHelper() = default; | |
| 29 | |
| 30 void SadTabTabHelper::CreateForWebState(web::WebState* web_state, | |
| 31 id<SadTabTabHelperDelegate> delegate) { | |
| 32 DCHECK(web_state); | |
| 33 if (!FromWebState(web_state)) { | |
| 34 web_state->SetUserData(UserDataKey(), | |
| 35 new SadTabTabHelper(web_state, delegate)); | |
| 36 } | |
| 37 } | |
| 38 | |
| 39 void SadTabTabHelper::RenderProcessGone() { | |
| 40 if (!delegate_ || [delegate_ isTabVisibleForTabHelper:this]) { | |
| 41 GURL lastCommittedURL = web_state()->GetLastCommittedURL(); | |
| 42 PresentSadTab(lastCommittedURL); | |
| 43 } | |
| 44 } | |
| 45 | |
| 46 void SadTabTabHelper::PresentSadTab(const GURL& url_causing_failure) { | |
| 47 SadTabView* sadTabView = [[SadTabView alloc] initWithReloadHandler:^{ | |
| 48 web_state()->GetNavigationManager()->Reload(web::ReloadType::NORMAL, true); | |
| 49 }]; | |
| 50 | |
| 51 CRWContentView* contentView = | |
| 52 [[CRWGenericContentView alloc] initWithView:sadTabView]; | |
| 53 | |
| 54 web_state()->ShowTransientContentView(contentView); | |
| 55 } | |
| OLD | NEW |