diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
index 5cbbfc0..b88d308 100644
--- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
+++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
@@ -23,13 +23,19 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IDocumentExtension4;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart;
+import org.w3c.dom.NodeList;
 
 /**
  * Test misc editor functions with an open xml editor.
@@ -114,4 +120,32 @@
 			assertTrue("Unable to set text in editor: " + e, false);
 		}
 	}
+
+	/**
+	 * Test structured document is reloaded on resource change
+	 * 
+	 */
+	public void testBug151069() {
+		IDocument doc = (IDocument) fEditor.getAdapter(IDocument.class);
+		doc.set("<html><body><h1>Title</h1></body></html>");
+		// set h1 to readonly
+		IModelManager modelManager = StructuredModelManager.getModelManager();
+		IDOMModel model = null;
+		try {
+			model = (IDOMModel) modelManager.getExistingModelForEdit(doc);
+			if (model != null) {
+				NodeList nl = model.getDocument().getElementsByTagName("h1");
+				IDOMElement h1 = (IDOMElement) nl.item(0);
+				h1.setEditable(false, true);
+			}
+		}
+		finally {
+			if (model != null)
+				model.releaseFromEdit();
+		}
+
+		String newContent = "new content";
+		((IDocumentExtension4) doc).set(newContent, fFile.getModificationStamp());
+		assertEquals("Set contents in document with read only regions failed", newContent, doc.get());
+	}
 }
