### Eclipse Workspace Patch 1.0 #P org.eclipse.swt Index: Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java,v retrieving revision 1.65 diff -u -r1.65 IE.java --- Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java 12 Jan 2010 20:45:04 -0000 1.65 +++ Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java 14 Jan 2010 10:11:22 -0000 @@ -41,6 +41,7 @@ static int IEVersion, PDFCount; static String ProgId = "Shell.Explorer"; //$NON-NLS-1$ + static final int navNoReadFromCache = 0x4; static final int BeforeNavigate2 = 0xfa; static final int CommandStateChange = 0x69; static final int DocumentComplete = 0x103; @@ -1088,12 +1089,19 @@ boolean navigate(String url, String postData, String headers[], boolean silent) { navigate = true; - int count = 1; + int count; + + //In IE8 we must add flags to list of parameters of Navigate method. + if (IEVersion >= 8) { + count = 2; + } else { + count = 1; + } if (postData != null) count++; if (headers != null) count++; Variant[] rgvarg = new Variant[count]; int[] rgdispidNamedArgs = new int[count]; - int[] rgdispid = auto.getIDsOfNames(new String[] { "Navigate", "URL", "PostData", "Headers" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + int[] rgdispid = auto.getIDsOfNames(new String[] { "Navigate", "URL", "PostData", "Headers", "Flags" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ int index = 0; rgvarg[index] = new Variant(url); rgdispidNamedArgs[index++] = rgdispid[1]; @@ -1122,6 +1130,15 @@ rgvarg[index] = new Variant(buffer.toString()); rgdispidNamedArgs[index++] = rgdispid[3]; } + /* + * Feature in Internet Explorer 8. Browser caches web pages and for the + * same address display always the same page until not refreshed. Setting + * flag navNoReadFromCache solves this problem. See bug #298822 + */ + if (IEVersion >= 8) { + rgvarg[index] = new Variant(navNoReadFromCache); + rgdispidNamedArgs[index++] = rgdispid[4]; + } boolean oldValue = false; if (silent && !OS.IsWinCE && IEVersion >= 7) { int hResult = OS.CoInternetIsFeatureEnabled(OS.FEATURE_DISABLE_NAVIGATION_SOUNDS, OS.GET_FEATURE_FROM_PROCESS);