blob: 25240becf41bed83f3dc7ef57bd9d0d75405b5f0 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/web/public/web_state/web_state_observer.h"
#import "ios/web/public/web_state/web_state_user_data.h"
@protocol SadTabTabHelperDelegate;
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
// SadTabTabHelper listens to RenderProcessGone events and presents a
// SadTabView view appropriately.
class SadTabTabHelper : public web::WebStateUserData<SadTabTabHelper>,
public web::WebStateObserver {
public:
~SadTabTabHelper() override;
// Creates a SadTabTabHelper and attaches it to a specific web_state object,
// a delegate object controls presentation.
static void CreateForWebState(web::WebState* web_state,
id<SadTabTabHelperDelegate> delegate);
private:
// Constructor for SadTabTabHelper, assigning the helper to a web_state and
// providing a delegate.
SadTabTabHelper(web::WebState* web_state,
id<SadTabTabHelperDelegate> delegate);
// Presents a new SadTabView via the web_state object.
void PresentSadTab();
// WebStateObserver:
void RenderProcessGone() override;
// A TabHelperDelegate that can control aspects of this tab helper's behavior.
__weak id<SadTabTabHelperDelegate> delegate_;
};