chromium/ios/chrome/browser/shared/ui/elements/activity_overlay_view.mm

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import "ios/chrome/browser/shared/ui/elements/activity_overlay_view.h"

#import "ios/chrome/browser/shared/ui/elements/elements_constants.h"
#import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h"
#import "ios/chrome/common/ui/colors/semantic_color_names.h"
#import "ios/chrome/common/ui/util/constraints_ui_util.h"

@implementation ActivityOverlayView

- (instancetype)init {
  self = [super initWithFrame:CGRectZero];
  if (self) {
    _indicator = GetLargeUIActivityIndicatorView();
    _indicator.translatesAutoresizingMaskIntoConstraints = NO;
  }
  return self;
}

- (void)didMoveToSuperview {
  if (self.subviews.count == 0) {
    // This is the first time the view is used, finish setting everything up.
    self.accessibilityIdentifier = kActivityOverlayViewAccessibilityIdentifier;
    [self addSubview:self.indicator];
    AddSameCenterConstraints(self, self.indicator);
    [self.indicator startAnimating];
    // It is better to use background color instead of alpha, so
    // ActivityOverlayView blocks all taps as soon as it is added in the view
    // hierarchy.
    self.backgroundColor = [UIColor clearColor];
    self.indicator.alpha = 0.;
    [UIView animateWithDuration:.3
                     animations:^{
                       self.backgroundColor =
                           [UIColor colorNamed:kScrimBackgroundColor];
                       self.indicator.alpha = 1.;
                     }
                     completion:NULL];
  }
  [super didMoveToSuperview];
}

@end