chromium/ios/chrome/browser/ui/sharing/activity_services/data/share_to_data.h

// Copyright 2012 The Chromium Authors
// 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_SHARING_ACTIVITY_SERVICES_DATA_SHARE_TO_DATA_H_
#define IOS_CHROME_BROWSER_UI_SHARING_ACTIVITY_SERVICES_DATA_SHARE_TO_DATA_H_

#import <UIKit/UIKit.h>

#include "ios/chrome/browser/ui/sharing/activity_services/data/chrome_activity_item_thumbnail_generator.h"
#include "ios/web/common/user_agent.h"
#include "url/gurl.h"

@interface ShareToData : NSObject

// Designated initializer.
- (id)initWithShareURL:(const GURL&)shareURL
            visibleURL:(const GURL&)visibleURL
                 title:(NSString*)title
        additionalText:(NSString*)additionalText
       isOriginalTitle:(BOOL)isOriginalTitle
       isPagePrintable:(BOOL)isPagePrintable
      isPageSearchable:(BOOL)isPageSearchable
      canSendTabToSelf:(BOOL)canSendTabToSelf
             userAgent:(web::UserAgentType)userAgent
    thumbnailGenerator:(ChromeActivityItemThumbnailGenerator*)thumbnailGenerator
          linkMetadata:(LPLinkMetadata*)linkMetadata;

// The URL to be shared with share extensions. This URL is the canonical URL of
// the page.
@property(nonatomic, readonly) const GURL& shareURL;
// The visible URL of the page.
@property(nonatomic, readonly) const GURL& visibleURL;

// NSURL version of 'shareURL'. Use only for passing
// to libraries that take NSURL.
@property(nonatomic, readonly) NSURL* shareNSURL;

// Title to be shared (not nil).
@property(nonatomic, readonly, copy) NSString* title;

// Additional text to be shared, such as highlighted text. May be nil.
@property(nonatomic, readonly, copy) NSString* additionalText;

// Whether the title was provided by the page (i.e., was not generated from
// the url).
@property(nonatomic, readonly, assign) BOOL isOriginalTitle;
// Whether the page is printable or not.
@property(nonatomic, assign) BOOL isPagePrintable;
// Whether FindInPage can be enabled for this page.
@property(nonatomic, readonly, assign) BOOL isPageSearchable;
// Whether the current tab can be sent via Send-Tab-To-Self.
@property(nonatomic, readonly, assign) BOOL canSendTabToSelf;
@property(nonatomic, readonly, assign) web::UserAgentType userAgent;
@property(nonatomic, readonly)
    ChromeActivityItemThumbnailGenerator* thumbnailGenerator;
@property(nonatomic, readonly) LPLinkMetadata* linkMetadata;

@end

#endif  // IOS_CHROME_BROWSER_UI_SHARING_ACTIVITY_SERVICES_DATA_SHARE_TO_DATA_H_