chromium/ios/chrome/test/scoped_eg_traits_overrider.h

// Copyright 2023 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_TEST_SCOPED_EG_TRAITS_OVERRIDER_H_
#define IOS_CHROME_TEST_SCOPED_EG_TRAITS_OVERRIDER_H_

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

// Change view controller trait overrides for EarlGrey tests and returns back to
// the original values in destructor.
class ScopedTraitOverrider {
 public:
  ScopedTraitOverrider(UIViewController* top_view_controller);

  ScopedTraitOverrider(const ScopedTraitOverrider&) = delete;
  ScopedTraitOverrider& operator=(const ScopedTraitOverrider&) = delete;

  ~ScopedTraitOverrider();

  // For other trait overrides, add other methods here. The `traitOverrides` is
  // read only.
  void SetContentSizeCategory(UIContentSizeCategory new_content_size_category);

 private:
  UIContentSizeCategory original_content_size_category_;
  UIViewController* top_view_controller_;
};

#endif  // IOS_CHROME_TEST_SCOPED_EG_TRAITS_OVERRIDER_H_