// Copyright 2012 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.

#ifndef IOS_CHROME_BROWSER_UI_NATIVE_CONTENT_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_NATIVE_CONTENT_CONTROLLER_H_

#import <Foundation/Foundation.h>

#import "ios/web/public/web_state/ui/crw_native_content.h"

class GURL;
@class UIView;

// Abstract base class for controllers that implement the behavior for native
// views that are presented inside the web content area. Automatically removes
// |view| from the view hierarchy when it is destroyed. Subclasses are
// responsible for setting the view (usually through loading a nib) and the
// page title.
@interface NativeContentController : NSObject<CRWNativeContent>

// Top-level view.
@property(nonatomic, retain) IBOutlet UIView* view;
@property(nonatomic, copy) NSString* title;
@property(nonatomic, readonly, assign) const GURL& url;

// Initializer that attempts to load the nib specified in |nibName|, which may
// be nil. The |url| is the url to be loaded.
- (instancetype)initWithNibName:(NSString*)nibName
                            url:(const GURL&)url NS_DESIGNATED_INITIALIZER;

- (instancetype)init NS_UNAVAILABLE;

// Initializer with the |url| to be loaded.
- (instancetype)initWithURL:(const GURL&)url;

@end

#endif  // IOS_CHROME_BROWSER_UI_NATIVE_CONTENT_CONTROLLER_H_