chromium/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h

// Copyright 2019 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_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_CONSTANTS_H_
#define IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_CONSTANTS_H_

#import <UIKit/UIKit.h>

#import "ios/chrome/browser/ntp/model/set_up_list_item_type.h"

// Enum specifying the type of Content Suggestions a module is showing.
// Entries should always keep synced with the IOSMagicStackModuleType histogram
// enum. Entries should not be renumbered and numeric values should never be
// reused.
// LINT.IfChange
enum class ContentSuggestionsModuleType {
  kInvalid = -1,
  kMostVisited = 0,
  kShortcuts = 1,
  kSetUpListSync = 2,
  kSetUpListDefaultBrowser = 3,
  kSetUpListAutofill = 4,
  kCompactedSetUpList = 5,
  kSetUpListAllSet = 6,
  kSafetyCheck = 7,
  // Removed: kSafetyCheckMultiRow = 8,
  // Removed: kSafetyCheckMultiRowOverflow = 9,
  kTabResumption = 10,
  kParcelTracking = 11,
  // Removed: kParcelTrackingSeeMore = 12,
  kSetUpListNotifications = 13,
  kPlaceholder = 14,
  kPriceTrackingPromo = 15,
  kMaxValue = kPriceTrackingPromo,
};
// LINT.ThenChange(/tools/metrics/histograms/metadata/ios/enums.xml)

// Enum for content notification promo events UMA metrics. Entries should not
// be renumbered and numeric values should never be reused. This should align
// with the ContentNotificationSnackbarEvent enum in enums.xml.
//
// LINT.IfChange
enum class ContentNotificationSnackbarEvent {
  kShown = 0,
  kActionButtonTapped = 1,
  kMaxValue = kActionButtonTapped,
};
// LINT.ThenChange(/tools/metrics/histograms/metadata/content/enums.xml)

// Represents the content suggestions collection view.
extern NSString* const kContentSuggestionsCollectionIdentifier;

// Represents the Learn More button in the content suggestions.
extern NSString* const kContentSuggestionsLearnMoreIdentifier;

// Represents the most visited tiles of the content suggestions.
extern NSString* const
    kContentSuggestionsMostVisitedAccessibilityIdentifierPrefix;

// Represents the shortcuts of the content suggestions.
extern NSString* const
    kContentSuggestionsShortcutsAccessibilityIdentifierPrefix;

// Represents the Magic Stack ScrollView.
extern NSString* const kMagicStackScrollViewAccessibilityIdentifier;

// Represents the Magic Stack UIStackView.
extern NSString* const kMagicStackViewAccessibilityIdentifier;

// Represents the "Done" button in the Magic Stack edit half sheet.
extern NSString* const
    kMagicStackEditHalfSheetDoneButtonAccessibilityIdentifier;

// Represents the "Continue with This Tab" module in the magic stack.
extern NSString* const
    kMagicStackContentSuggestionsModuleTabResumptionAccessibilityIdentifier;

// Represents the width of the Magic Stack ScrollView for the unique wide
// layout.
extern const CGFloat kMagicStackWideWidth;

// The bottom margin below the Most Visited section.
extern const CGFloat kMostVisitedBottomMargin;

// Most Visited Tiles favicon width when kMagicStack is enabled.
extern const CGFloat kMagicStackFaviconWidth;

// Returns the matching ContentSuggestionsModuleType for a given
// SetUpListItemType `type`.
ContentSuggestionsModuleType SetUpListModuleTypeForSetUpListType(
    SetUpListItemType type);

// Returns true if the module type is one of the SetUpList types.
bool IsSetUpListModuleType(ContentSuggestionsModuleType type);

#endif  // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_CONSTANTS_H_