Bug 573355 - Avoid double refresh after IDE crash

Allow org.eclipse.ui.ide.application to check if workspace crash was
detected, so it can skip (another one) workspace refresh in that case.

Change-Id: I8467f916eccb2f37877c1ff29bd01ecebda694b9
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.resources/+/180203
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
diff --git a/bundles/org.eclipse.core.resources/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.resources/META-INF/MANIFEST.MF
index 0261120..3ace510 100644
--- a/bundles/org.eclipse.core.resources/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.resources/META-INF/MANIFEST.MF
@@ -11,8 +11,8 @@
  org.eclipse.core.internal.localstore;x-internal:=true,
  org.eclipse.core.internal.properties;x-internal:=true,
  org.eclipse.core.internal.propertytester;x-internal:=true,
- org.eclipse.core.internal.refresh;x-internal:=true,
- org.eclipse.core.internal.resources;x-internal:=true,
+ org.eclipse.core.internal.refresh;x-friends:="org.eclipse.ui.ide.application",
+ org.eclipse.core.internal.resources;x-friends:="org.eclipse.ui.ide.application",
  org.eclipse.core.internal.resources.mapping;x-internal:=true,
  org.eclipse.core.internal.resources.projectvariables;x-internal:=true,
  org.eclipse.core.internal.resources.refresh.win32;x-internal:=true,
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java
index 9c4b4a6..c1207d0 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java
@@ -2376,6 +2376,13 @@
 		}
 	}
 
+	/**
+	 * @return true if workspace crash in previous session was detected at startup
+	 */
+	public boolean isCrashed() {
+		return crashed;
+	}
+
 	@Override
 	public void setDescription(IWorkspaceDescription value) {
 		// if both the old and new description's build orders are null, leave the