// Visible for testing
        internal void SaveEditorConfiguration(QuickDeployWindow.ToolBarSelectedButton currentTab,
                                              EditorConfiguration configuration, string editorConfigurationPath)
        {
            switch (currentTab)
            {
            case QuickDeployWindow.ToolBarSelectedButton.CreateBundle:
                configuration.assetBundleFileName = AssetBundleFileName;
                break;

            case QuickDeployWindow.ToolBarSelectedButton.DeployBundle:
                configuration.cloudCredentialsFileName = CloudCredentialsFileName;
                configuration.assetBundleFileName      = AssetBundleFileName;
                configuration.cloudStorageBucketName   = CloudStorageBucketName;
                configuration.cloudStorageObjectName   = CloudStorageObjectName;
                break;

            default:
                throw new ArgumentOutOfRangeException("currentTab", currentTab,
                                                      "Can't save editor configurations from this tab.");
            }

            // Shouldn't hurt to write to persistent storage as long as SaveEditorConfiguration(currentTab) is only called
            // when a major action happens.
            File.WriteAllText(editorConfigurationPath, JsonUtility.ToJson(configuration));
        }
        // Visible for testing
        internal void SaveEngineConfiguration(QuickDeployWindow.ToolBarSelectedButton currentTab,
                                              LoadingScreenConfig.EngineConfiguration configuration, string engineConfigurationPath)
        {
            switch (currentTab)
            {
            case QuickDeployWindow.ToolBarSelectedButton.LoadingScreen:
                configuration.assetBundleUrl = AssetBundleUrl;
                break;

            default:
                throw new ArgumentOutOfRangeException("currentTab", currentTab,
                                                      "Can't save engine configurations from this tab.");
            }

            Directory.CreateDirectory(ResourcesDirectoryPath);

            // Shouldn't hurt to write to persistent storage as long as SaveEngineConfiguration(currentTab) is only called
            // when a major action happens.
            File.WriteAllText(engineConfigurationPath, JsonUtility.ToJson(configuration));
        }
        /// <summary>
        /// Store configuration from the current quick deploy tab to persistent storage.
        /// </summary>
        /// <exception cref="ArgumentOutOfRangeException">Thrown if tab shouldn't have input fields.</exception>
        public void SaveConfiguration(QuickDeployWindow.ToolBarSelectedButton currentTab)
        {
            switch (currentTab)
            {
            case QuickDeployWindow.ToolBarSelectedButton.CreateBundle:
                SaveEditorConfiguration(QuickDeployWindow.ToolBarSelectedButton.CreateBundle, EditorConfig,
                                        EditorConfigurationFilePath);
                break;

            case QuickDeployWindow.ToolBarSelectedButton.DeployBundle:
                SaveEditorConfiguration(QuickDeployWindow.ToolBarSelectedButton.DeployBundle, EditorConfig,
                                        EditorConfigurationFilePath);
                break;

            case QuickDeployWindow.ToolBarSelectedButton.LoadingScreen:
                SaveEngineConfiguration(QuickDeployWindow.ToolBarSelectedButton.LoadingScreen, EngineConfig,
                                        EngineConfigurationFilePath);
                break;

            default:
                throw new ArgumentOutOfRangeException("currentTab", currentTab, "Can't save from this tab.");
            }
        }