| // 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/chrome/browser/ui/commands/open_new_tab_command.h" |
| |
| #include "ios/web/public/navigation/referrer.h" |
| #include "url/gurl.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| @implementation OpenNewTabCommand { |
| GURL _URL; |
| GURL _virtualURL; |
| web::Referrer _referrer; |
| } |
| |
| @synthesize inIncognito = _inIncognito; |
| @synthesize inBackground = _inBackground; |
| @synthesize originPoint = _originPoint; |
| @synthesize fromChrome = _fromChrome; |
| @synthesize appendTo = _appendTo; |
| @synthesize userInitiated = _userInitiated; |
| @synthesize shouldFocusOmnibox = _shouldFocusOmnibox; |
| |
| - (instancetype)initInIncognito:(BOOL)inIncognito |
| inBackground:(BOOL)inBackground { |
| if ((self = [super init])) { |
| _inIncognito = inIncognito; |
| _inBackground = inBackground; |
| _userInitiated = YES; |
| } |
| return self; |
| } |
| |
| - (instancetype)initWithURL:(const GURL&)URL |
| virtualURL:(const GURL&)virtualURL |
| referrer:(const web::Referrer&)referrer |
| inIncognito:(BOOL)inIncognito |
| inBackground:(BOOL)inBackground |
| appendTo:(OpenPosition)append { |
| if ((self = [self initInIncognito:inIncognito inBackground:inBackground])) { |
| _URL = URL; |
| _virtualURL = virtualURL; |
| _referrer = referrer; |
| _appendTo = append; |
| } |
| return self; |
| } |
| |
| - (instancetype)initWithURL:(const GURL&)URL |
| referrer:(const web::Referrer&)referrer |
| inIncognito:(BOOL)inIncognito |
| inBackground:(BOOL)inBackground |
| appendTo:(OpenPosition)append { |
| return [self initWithURL:URL |
| virtualURL:GURL::EmptyGURL() |
| referrer:referrer |
| inIncognito:inIncognito |
| inBackground:inBackground |
| appendTo:append]; |
| } |
| |
| - (instancetype)initFromChrome:(const GURL&)URL inIncognito:(BOOL)inIncognito { |
| self = [self initWithURL:URL |
| referrer:web::Referrer() |
| inIncognito:inIncognito |
| inBackground:NO |
| appendTo:kLastTab]; |
| if (self) { |
| _fromChrome = YES; |
| } |
| return self; |
| } |
| |
| + (instancetype)commandWithIncognito:(BOOL)incognito |
| originPoint:(CGPoint)origin { |
| OpenNewTabCommand* command = |
| [[self alloc] initInIncognito:incognito inBackground:NO]; |
| command.originPoint = origin; |
| return command; |
| } |
| |
| + (instancetype)commandWithIncognito:(BOOL)incognito { |
| return [[self alloc] initInIncognito:incognito inBackground:NO]; |
| } |
| |
| + (instancetype)command { |
| return [self commandWithIncognito:NO]; |
| } |
| |
| + (instancetype)incognitoTabCommand { |
| return [self commandWithIncognito:YES]; |
| } |
| |
| + (instancetype)commandWithURLFromChrome:(const GURL&)URL |
| inIncognito:(BOOL)inIncognito { |
| return [[self alloc] initFromChrome:URL inIncognito:inIncognito]; |
| } |
| |
| + (instancetype)commandWithURLFromChrome:(const GURL&)URL { |
| return [[self alloc] initFromChrome:URL inIncognito:NO]; |
| } |
| |
| - (const GURL&)URL { |
| return _URL; |
| } |
| |
| - (const GURL&)virtualURL { |
| return _virtualURL; |
| } |
| |
| - (const web::Referrer&)referrer { |
| return _referrer; |
| } |
| |
| @end |