blob: fd1f630a02e63eeeda573eab9847525c38fd62c8 [file] [log] [blame]
/*
* Copyright 2000-2010 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.android;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.util.Key;
import org.jetbrains.annotations.NotNull;
/**
* @author coyote
*/
public class AndroidPlugin implements ApplicationComponent {
public static Key<Runnable> EXECUTE_BEFORE_PROJECT_BUILD_IN_GUI_TEST_KEY = Key.create("gui.test.execute.before.build");
public static Key<Runnable> EXECUTE_BEFORE_PROJECT_SYNC_TASK_IN_GUI_TEST_KEY = Key.create("gui.test.execute.before.sync.task");
public static Key<String> GRADLE_BUILD_OUTPUT_IN_GUI_TEST_KEY = Key.create("gui.test.gradle.build.output");
public static Key<String[]> GRADLE_SYNC_COMMAND_LINE_OPTIONS_KEY = Key.create("gradle.sync.command.line.options");
private static boolean ourGuiTestingMode;
private static GuiTestSuiteState ourGuiTestSuiteState;
@Override
@NotNull
public String getComponentName() {
return "AndroidApplicationComponent";
}
@Override
public void initComponent() {
}
@Override
public void disposeComponent() {
}
public static boolean isGuiTestingMode() {
return ourGuiTestingMode;
}
public static void setGuiTestingMode(boolean guiTestingMode) {
ourGuiTestingMode = guiTestingMode;
ourGuiTestSuiteState = ourGuiTestingMode ? new GuiTestSuiteState() : null;
}
// Ideally we would have this class in IdeTestApplication. The problem is that IdeTestApplication and UI tests run in different
// ClassLoaders and UI tests are unable to see the same instance of IdeTestApplication.
@NotNull
public static GuiTestSuiteState getGuiTestSuiteState() {
if (!ourGuiTestingMode) {
throw new UnsupportedOperationException("The method 'getGuiTestSuiteState' can only be invoked when running UI tests");
}
return ourGuiTestSuiteState;
}
public static class GuiTestSuiteState {
private boolean myOpenProjectWizardAlreadyTested;
private boolean myImportProjectWizardAlreadyTested;
private boolean mySkipSdkMerge;
private boolean myUseCachedGradleModelOnly;
public boolean isOpenProjectWizardAlreadyTested() {
return myOpenProjectWizardAlreadyTested;
}
public void setOpenProjectWizardAlreadyTested(boolean openProjectWizardAlreadyTested) {
myOpenProjectWizardAlreadyTested = openProjectWizardAlreadyTested;
}
public boolean isImportProjectWizardAlreadyTested() {
return myImportProjectWizardAlreadyTested;
}
public void setImportProjectWizardAlreadyTested(boolean importProjectWizardAlreadyTested) {
myImportProjectWizardAlreadyTested = importProjectWizardAlreadyTested;
}
public boolean isSkipSdkMerge() {
return mySkipSdkMerge;
}
public void setSkipSdkMerge(boolean skipSdkMerge) {
mySkipSdkMerge = skipSdkMerge;
}
public boolean syncWithCachedModelOnly() {
return myUseCachedGradleModelOnly;
}
public void setUseCachedGradleModelOnly(boolean useCachedGradleModelOnly) {
myUseCachedGradleModelOnly = useCachedGradleModelOnly;
}
}
}