[397904] Memory leaks in Juno when opening and closing XML Editor - Context Checker
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
index 244dfd9..2e9a837 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -155,6 +155,7 @@
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;
import org.eclipse.ui.texteditor.TextOperationAction;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.views.properties.IPropertySheetPage;
import org.eclipse.wst.sse.core.StructuredModelManager;
@@ -2100,7 +2101,7 @@
}
// content outline page
else if (IContentOutlinePage.class.equals(required)) {
- if (fOutlinePage == null) {
+ if (fOutlinePage == null && isCalledByOutline()) {
ContentOutlineConfiguration cfg = createContentOutlineConfiguration();
if (cfg != null) {
ConfigurableContentOutlinePage outlinePage = new ConfigurableContentOutlinePage();
@@ -3680,6 +3681,17 @@
}
}
+ private static boolean isCalledByOutline() {
+ Class[] elements= new AccessChecker().getClassContext();
+ return elements[4].equals(ContentOutline.class) || elements[5].equals(ContentOutline.class);
+ }
+
+ private static final class AccessChecker extends SecurityManager {
+ public Class[] getClassContext() {
+ return super.getClassContext();
+ }
+ }
+
private IInformationPresenter configureOutlinePresenter(ISourceViewer sourceViewer, SourceViewerConfiguration config) {
InformationPresenter presenter = null;