content: package com.termux.shared.shell.am;
  
  import android.Manifest;
  
  import androidx.annotation.NonNull;
  
  import com.termux.shared.logger.Logger;
  import com.termux.shared.markdown.MarkdownUtils;
  import com.termux.shared.net.socket.local.ILocalSocketManager;
  import com.termux.shared.net.socket.local.LocalSocketRunConfig;
  
  import java.io.Serializable;
  
  /**
   * Run config for {@link AmSocketServer}.
   */
  public class AmSocketServerRunConfig extends LocalSocketRunConfig implements Serializable {
  
      /**
       * Check if {@link Manifest.permission#SYSTEM_ALERT_WINDOW} has been granted if running on Android `>= 10`
       * if starting activities. Will also check when starting services in case starting foreground
       * service is not allowed.
       *
       * https://developer.android.com/guide/components/activities/background-starts
       */
      private Boolean mCheckDisplayOverAppsPermission;
      public static final boolean DEFAULT_CHECK_DISPLAY_OVER_APPS_PERMISSION = true;
  
      /**
       * Create an new instance of {@link AmSocketServerRunConfig}.
       *
       * @param title The {@link #mTitle} value.
       * @param path The {@link #mPath} value.
       * @param localSocketManagerClient The {@link #mLocalSocketManagerClient} value.
       */
      public AmSocketServerRunConfig(@NonNull String title, @NonNull String path, @NonNull ILocalSocketManager localSocketManagerClient) {
          super(title, path, localSocketManagerClient);
      }
  
  
      /** Get {@link #mCheckDisplayOverAppsPermission} if set, otherwise {@link #DEFAULT_CHECK_DISPLAY_OVER_APPS_PERMISSION}. */
      public boolean shouldCheckDisplayOverAppsPermission() {
          return mCheckDisplayOverAppsPermission != null ? mCheckDisplayOverAppsPermission : DEFAULT_CHECK_DISPLAY_OVER_APPS_PERMISSION;
      }
  
      /** Set {@link #mCheckDisplayOverAppsPermission}. */
      public void setCheckDisplayOverAppsPermission(Boolean checkDisplayOverAppsPermission) {
          mCheckDisplayOverAppsPermission = checkDisplayOverAppsPermission;
      }
  
  
  
      /**
       * Get a log {@link String} for {@link AmSocketServerRunConfig}.
       *
       * @param config The {@link AmSocketServerRunConfig} to get info of.
       * @return Returns the log {@link String}.
       */
      @NonNull
      public static String getRunConfigLogString(final AmSocketServerRunConfig config) {
          if (config == null) return "null";
          return config.getLogString();
      }
  
      /** Get a log {@link String} for the {@link AmSocketServerRunConfig}. */
      @NonNull
      public String getLogString() {
          StringBuilder logString = new StringBuilder();
          logString.append(super.getLogString()).append("\n\n\n");
  
          logString.append("Am Command:");
          logString.append("\n").append(Logger.getSingleLineLogStringEntry("CheckDisplayOverAppsPermission", shouldCheckDisplayOverAppsPermission(), "-"));
  
          return logString.toString();
      }
  
      /**
       * Get a markdown {@link String} for {@link AmSocketServerRunConfig}.
       *
       * @param config The {@link AmSocketServerRunConfig} to get info of.
       * @return Returns the markdown {@link String}.
       */
      public static String getRunConfigMarkdownString(final AmSocketServerRunConfig config) {
          if (config == null) return "null";
          return config.getMarkdownString();
      }
  
      /** Get a markdown {@link String} for the {@link AmSocketServerRunConfig}. */
      @NonNull
      public String getMarkdownString() {
          StringBuilder markdownString = new StringBuilder();
          markdownString.append(super.getMarkdownString()).append("\n\n\n");
  
          markdownString.append("## ").append("Am Command");
          markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("CheckDisplayOverAppsPermission", shouldCheckDisplayOverAppsPermission(), "-"));
  
          return markdownString.toString();
      }
  
  
  
      @NonNull
      @Override
      public String toString() {
          return getLogString();
      }
  
  }
  