Fix for Bug 352083 - ProgressListener.completed() not always called
diff --git a/bundles/org.eclipse.rap.rwt.q07/js/org/eclipse/swt/browser/Browser.js b/bundles/org.eclipse.rap.rwt.q07/js/org/eclipse/swt/browser/Browser.js
index c0da63f..f7809e3 100644
--- a/bundles/org.eclipse.rap.rwt.q07/js/org/eclipse/swt/browser/Browser.js
+++ b/bundles/org.eclipse.rap.rwt.q07/js/org/eclipse/swt/browser/Browser.js
@@ -109,8 +109,8 @@
         this.base( arguments, evt );
         if( this._isContentAccessible() ) {
           this._attachBrowserFunctions();
-          this._sendProgressEvent();
         }
+        this._sendProgressEvent();
       }
     },
 
@@ -125,7 +125,7 @@
         var widgetManager = org.eclipse.swt.WidgetManager.getInstance();
         var req = org.eclipse.swt.Request.getInstance();
         var id = widgetManager.findIdByWidget( this );
-        req.addEvent( "org.eclipse.swt.events.progressCompleted", id );
+        req.addParameter( id + ".org.eclipse.swt.events.progressCompleted", "true" );
         req.send();
       }
     },
diff --git a/bundles/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA.java b/bundles/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA.java
index d89e884..24b5754 100644
--- a/bundles/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA.java
+++ b/bundles/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA.java
@@ -94,7 +94,8 @@
   }
 
   public void fireProgressEvent( Browser browser ) {
-    if( WidgetLCAUtil.wasEventSent( browser, EVENT_PROGRESS_COMPLETED ) ) {
+    String fireProgressEvent = WidgetLCAUtil.readPropertyValue( browser, EVENT_PROGRESS_COMPLETED );
+    if( fireProgressEvent != null ) {
       ProgressEvent changedEvent
         = new ProgressEvent( browser, ProgressEvent.CHANGED );
       changedEvent.processEvent();
diff --git a/tests/org.eclipse.rap.rwt.q07.jstest/js/org/eclipse/rwt/test/tests/BrowserTest.js b/tests/org.eclipse.rap.rwt.q07.jstest/js/org/eclipse/rwt/test/tests/BrowserTest.js
index f4874dc..ad4a2dd 100644
--- a/tests/org.eclipse.rap.rwt.q07.jstest/js/org/eclipse/rwt/test/tests/BrowserTest.js
+++ b/tests/org.eclipse.rap.rwt.q07.jstest/js/org/eclipse/rwt/test/tests/BrowserTest.js
@@ -538,6 +538,27 @@
       assertEquals( ecpected, browser.objectToString( object ) );
     },
 
+    testProgressEvent :  [
+      function() {
+        var testUtil = org.eclipse.rwt.test.fixture.TestUtil;
+        var browser = this._createBrowser();
+        browser.setHasProgressListener( true );
+        testUtil.initRequestLog();
+        browser.setSource( "http://www.google.de/" );
+        browser.syncSource();
+        testUtil.delayTest( 1000 );
+        testUtil.store( browser );
+      },
+      function( browser ) {
+        assertTrue( "slow connection?", browser._isLoaded );
+        var testUtil = org.eclipse.rwt.test.fixture.TestUtil;
+        assertEquals( 1, testUtil.getRequestsSend() );
+        var msg = testUtil.getMessage();
+        assertTrue( msg.indexOf( "w6.org.eclipse.swt.events.progressCompleted=true" ) != -1 );
+        browser.destroy();
+      }
+    ],
+
     /////////////
     // helper
     
diff --git a/tests/org.eclipse.rap.rwt.q07.test/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA_Test.java b/tests/org.eclipse.rap.rwt.q07.test/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA_Test.java
index ccdeb95..5167e4f 100644
--- a/tests/org.eclipse.rap.rwt.q07.test/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA_Test.java
+++ b/tests/org.eclipse.rap.rwt.q07.test/src/org/eclipse/swt/internal/browser/browserkit/BrowserLCA_Test.java
@@ -330,7 +330,7 @@
       }
     } );
     String browserId = WidgetUtil.getId( browser );
-    Fixture.fakeRequestParam( BrowserLCA.EVENT_PROGRESS_COMPLETED, browserId );
+    Fixture.fakeRequestParam( browserId + "." + BrowserLCA.EVENT_PROGRESS_COMPLETED, "true" );
     Fixture.readDataAndProcessAction( browser );
     assertEquals( 2, log.size() );
     assertEquals( "changed", log.get( 0 ) );