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 f7809e3..29d1556 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
@@ -125,7 +125,7 @@
         var widgetManager = org.eclipse.swt.WidgetManager.getInstance();
         var req = org.eclipse.swt.Request.getInstance();
         var id = widgetManager.findIdByWidget( this );
-        req.addParameter( id + ".org.eclipse.swt.events.progressCompleted", "true" );
+        req.addEvent( "org.eclipse.swt.events.progressCompleted", id );
         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 24b5754..d89e884 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,8 +94,7 @@
   }
 
   public void fireProgressEvent( Browser browser ) {
-    String fireProgressEvent = WidgetLCAUtil.readPropertyValue( browser, EVENT_PROGRESS_COMPLETED );
-    if( fireProgressEvent != null ) {
+    if( WidgetLCAUtil.wasEventSent( browser, EVENT_PROGRESS_COMPLETED ) ) {
       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 ad4a2dd..eec65e5 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
@@ -554,7 +554,7 @@
         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 );
+        assertTrue( msg.indexOf( "org.eclipse.swt.events.progressCompleted=w6" ) != -1 );
         browser.destroy();
       }
     ],
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 5167e4f..ccdeb95 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( browserId + "." + BrowserLCA.EVENT_PROGRESS_COMPLETED, "true" );
+    Fixture.fakeRequestParam( BrowserLCA.EVENT_PROGRESS_COMPLETED, browserId );
     Fixture.readDataAndProcessAction( browser );
     assertEquals( 2, log.size() );
     assertEquals( "changed", log.get( 0 ) );
