Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 203996 Details for
Bug 353891
[UICallback] Selecting cancel on ProgressDialog does not close dialog
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Fix
clipboard.txt (text/plain), 12.62 KB, created by
RĂ¼diger Herrmann
on 2011-09-26 05:56:49 EDT
(
hide
)
Description:
Fix
Filename:
MIME Type:
Creator:
RĂ¼diger Herrmann
Created:
2011-09-26 05:56:49 EDT
Size:
12.62 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rap.rwt >Index: src/org/eclipse/rwt/internal/uicallback/UICallBackManager.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/rwt/internal/uicallback/UICallBackManager.java,v >retrieving revision 1.9 >diff -u -r1.9 UICallBackManager.java >--- src/org/eclipse/rwt/internal/uicallback/UICallBackManager.java 24 Jul 2011 15:18:01 -0000 1.9 >+++ src/org/eclipse/rwt/internal/uicallback/UICallBackManager.java 26 Sep 2011 09:47:21 -0000 >@@ -46,7 +46,6 @@ > private boolean uiThreadRunning; > // indicates whether the display has runnables to execute > private boolean hasRunnables; >- private boolean wakeCalled; > private int requestCheckInterval; > private transient CallBackRequestTracker callBackRequestTracker; > >@@ -54,7 +53,6 @@ > lock = new SerializableLock(); > idManager = new IdManager(); > uiThreadRunning = false; >- wakeCalled = false; > requestCheckInterval = DEFAULT_REQUEST_CHECK_INTERVAL; > callBackRequestTracker = new CallBackRequestTracker(); > } >@@ -75,7 +73,6 @@ > > public void releaseBlockedRequest() { > synchronized( lock ) { >- wakeCalled = true; > lock.notifyAll(); > } > } >@@ -138,8 +135,7 @@ > SessionTerminationListener listener = attachSessionTerminationListener(); > try { > boolean canRelease = false; >- wakeCalled = false; >- while( !wakeCalled && !canRelease ) { >+ while( !canRelease ) { > lock.wait( requestCheckInterval ); > canRelease = canReleaseBlockedRequest( response, requestStartTime ); > } >@@ -159,9 +155,7 @@ > return result; > } > >- private boolean canReleaseBlockedRequest( HttpServletResponse response, >- long requestStartTime ) >- { >+ private boolean canReleaseBlockedRequest( HttpServletResponse response, long requestStartTime ) { > boolean result = false; > if( !mustBlockCallBackRequest() ) { > result = true; >Index: src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler.java,v >retrieving revision 1.7 >diff -u -r1.7 UICallBackServiceHandler.java >--- src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler.java 22 Sep 2011 07:43:15 -0000 1.7 >+++ src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler.java 26 Sep 2011 09:47:21 -0000 >@@ -37,25 +37,46 @@ > boolean success = UICallBackManager.getInstance().processRequest( response ); > if( success && sessionStore.isBound() ) { > JavaScriptResponseWriter writer = new JavaScriptResponseWriter( response ); >- writeUICallBackActivation( writer ); >+ writeUICallBackDeactivation( writer ); > writeUIRequestNeeded( writer ); > } > } > > public static void writeUICallBackActivation( JavaScriptResponseWriter writer ) { > boolean actual = UICallBackManager.getInstance().needsActivation(); >- ISessionStore sessionStore = ContextProvider.getSession(); >- Boolean preserved = ( Boolean )sessionStore.getAttribute( ATTR_NEEDS_UICALLBACK ); >- if( preserved == null ) { >- preserved = Boolean.FALSE; >+ boolean preserved = getPreservedUICallBackActivation(); >+ if( preserved != actual && actual ) { >+ writeUICallBackActivation( writer, actual ); >+ ISessionStore sessionStore = ContextProvider.getSession(); >+ sessionStore.setAttribute( ATTR_NEEDS_UICALLBACK, Boolean.valueOf( actual ) ); > } >- if( preserved.booleanValue() != actual ) { >- writer.write( "org.eclipse.swt.Request.getInstance().setUiCallBackActive( " >- + Boolean.toString( actual ) >- + " );" ); >+ } >+ >+ public static void writeUICallBackDeactivation( JavaScriptResponseWriter writer ) { >+ boolean actual = UICallBackManager.getInstance().needsActivation(); >+ boolean preserved = getPreservedUICallBackActivation(); >+ if( preserved != actual && !actual ) { >+ writeUICallBackActivation( writer, actual ); >+ ISessionStore sessionStore = ContextProvider.getSession(); > sessionStore.setAttribute( ATTR_NEEDS_UICALLBACK, Boolean.valueOf( actual ) ); > } > } >+ >+ private static void writeUICallBackActivation( JavaScriptResponseWriter writer, boolean value ) { >+ writer.write( "org.eclipse.swt.Request.getInstance().setUiCallBackActive( " >+ + Boolean.toString( value ) >+ + " );" ); >+ } >+ >+ private static boolean getPreservedUICallBackActivation() { >+ boolean result = false; >+ ISessionStore sessionStore = ContextProvider.getSession(); >+ Boolean preserved = ( Boolean )sessionStore.getAttribute( ATTR_NEEDS_UICALLBACK ); >+ if( preserved != null ) { >+ result = preserved.booleanValue(); >+ } >+ return result; >+ } > > static void writeUIRequestNeeded( JavaScriptResponseWriter writer ) { > if( UICallBackManager.getInstance().hasRunnables() ) { >Index: src/org/eclipse/swt/widgets/Display.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Display.java,v >retrieving revision 1.142 >diff -u -r1.142 Display.java >--- src/org/eclipse/swt/widgets/Display.java 26 Sep 2011 07:49:01 -0000 1.142 >+++ src/org/eclipse/swt/widgets/Display.java 26 Sep 2011 09:47:22 -0000 >@@ -1198,7 +1198,7 @@ > if( thread != Thread.currentThread() ) { > UICallBack.runNonUIThreadWithFakeContext( this, new Runnable() { > public void run() { >- UICallBackManager.getInstance().releaseBlockedRequest(); >+ synchronizer.asyncExec( new WakeRunnable() ); > } > } ); > } >@@ -2282,6 +2282,11 @@ > ///////////////// > // Inner classes > >+ private static class WakeRunnable implements Runnable, SerializableCompatibility { >+ public void run() { >+ } >+ } >+ > private static class FilterEntry implements IFilterEntry, SerializableCompatibility { > > private final int eventType; >#P org.eclipse.rap.rwt.test >Index: src/org/eclipse/rwt/internal/uicallback/UICallBackManager_Test.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.test/src/org/eclipse/rwt/internal/uicallback/UICallBackManager_Test.java,v >retrieving revision 1.11 >diff -u -r1.11 UICallBackManager_Test.java >--- src/org/eclipse/rwt/internal/uicallback/UICallBackManager_Test.java 25 Sep 2011 15:19:25 -0000 1.11 >+++ src/org/eclipse/rwt/internal/uicallback/UICallBackManager_Test.java 26 Sep 2011 09:47:23 -0000 >@@ -105,8 +105,10 @@ > assertNull( uiCallBackServiceHandlerThrowable[ 0 ] ); > assertTrue( manager.isCallBackRequestBlocked() ); > >+ manager.setHasRunnables( true ); > manager.wakeClient(); > thread.join(); >+ > assertFalse( manager.isCallBackRequestBlocked() ); > assertFalse( thread.isAlive() ); > } >@@ -138,23 +140,22 @@ > } > > // same test as above, but while UIThread running >- public void testWaitOnBackgroundThread_DuringLifecycle() throws Exception { >+ public void testWaitOnBackgroundThreadDuringLifecycle() throws Throwable { > final Throwable[] uiCallBackServiceHandlerThrowable = { null }; > ServiceContext context = ContextProvider.getContext(); > simulateUiCallBackThread( uiCallBackServiceHandlerThrowable, context ); > assertNull( uiCallBackServiceHandlerThrowable[ 0 ] ); > assertTrue( manager.isCallBackRequestBlocked() ); >- Thread thread = new Thread( new Runnable() { >+ Runnable runnable = new Runnable() { > public void run() { > display.wake(); > } >- } ); >+ }; > // assume that UIThread is currently running the life cycle > manager.notifyUIThreadStart(); >- thread.start(); >- thread.join(); >- Thread.sleep( SLEEP_TIME ); >+ Fixture.runInThread( runnable ); > manager.notifyUIThreadEnd(); >+ Thread.sleep( SLEEP_TIME ); > assertFalse( manager.isCallBackRequestBlocked() ); > } > >Index: src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler_Test.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.test/src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler_Test.java,v >retrieving revision 1.11 >diff -u -r1.11 UICallBackServiceHandler_Test.java >--- src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler_Test.java 25 Sep 2011 15:19:25 -0000 1.11 >+++ src/org/eclipse/rwt/internal/uicallback/UICallBackServiceHandler_Test.java 26 Sep 2011 09:47:23 -0000 >@@ -18,10 +18,13 @@ > > import junit.framework.TestCase; > >-import org.eclipse.rap.rwt.testfixture.*; >+import org.eclipse.rap.rwt.testfixture.Fixture; >+import org.eclipse.rap.rwt.testfixture.TestResponse; > import org.eclipse.rap.rwt.testfixture.internal.NoOpRunnable; > import org.eclipse.rwt.internal.lifecycle.JavaScriptResponseWriter; > import org.eclipse.rwt.internal.service.ContextProvider; >+import org.eclipse.rwt.internal.service.RequestParams; >+import org.eclipse.swt.internal.widgets.displaykit.DisplayLCA; > import org.eclipse.swt.widgets.Display; > > >@@ -65,7 +68,7 @@ > > Fixture.fakeNewRequest(); > UICallBackManager.getInstance().deactivateUICallBacksFor( "id" ); >- UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); >+ UICallBackServiceHandler.writeUICallBackDeactivation( getResponseWriter() ); > > assertEquals( DISABLE_UI_CALLBACK, Fixture.getAllMarkup() ); > } >@@ -78,11 +81,35 @@ > Fixture.fakeNewRequest(); > display.dispose(); > UICallBackManager.getInstance().deactivateUICallBacksFor( "id" ); >- UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); >+ UICallBackServiceHandler.writeUICallBackDeactivation( getResponseWriter() ); > > assertEquals( DISABLE_UI_CALLBACK, Fixture.getAllMarkup() ); > } >+ >+ public void testWriteUICallBackDeactivateIsNotSentFromUIRequest() throws Exception { >+ Display display = new Display(); >+ UICallBackManager.getInstance().activateUICallBacksFor( "id" ); >+ UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); >+ >+ Fixture.fakeNewRequest(); >+ Fixture.fakeRequestParam( RequestParams.UIROOT, "w1" ); >+ UICallBackManager.getInstance().deactivateUICallBacksFor( "id" ); >+ new DisplayLCA().render( display ); >+ >+ assertFalse( Fixture.getAllMarkup().contains( DISABLE_UI_CALLBACK ) ); >+ } > >+ public void testWriteUICallBackDeactivateIsSentFromServiceHandler() throws Exception { >+ UICallBackManager.getInstance().activateUICallBacksFor( "id" ); >+ UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); >+ >+ Fixture.fakeNewRequest(); >+ UICallBackManager.getInstance().deactivateUICallBacksFor( "id" ); >+ new UICallBackServiceHandler().service(); >+ >+ assertEquals( DISABLE_UI_CALLBACK, Fixture.getAllMarkup() ); >+ } >+ > public void testWriteUICallBackActivateTwice() throws Exception { > UICallBackManager.getInstance().activateUICallBacksFor( "id" ); > UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); >@@ -100,19 +127,6 @@ > assertEquals( "", Fixture.getAllMarkup() ); > } > >- public void testUICallBackActivationUpdated() throws Exception { >- Display display = new Display(); >- UICallBackManager.getInstance().activateUICallBacksFor( "id" ); >- UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); >- Fixture.fakeNewRequest(); >- UICallBackManager.getInstance().deactivateUICallBacksFor( "id" ); >- display.asyncExec( new NoOpRunnable() ); >- >- new UICallBackServiceHandler().service(); >- >- assertTrue( Fixture.getAllMarkup().contains( DISABLE_UI_CALLBACK ) ); >- } >- > public void testWriteUICallBackActivationWithoutDisplay() throws Exception { > UICallBackServiceHandler.writeUICallBackActivation( getResponseWriter() ); > >@@ -154,6 +168,22 @@ > > assertEquals( SEND_UI_REQUEST, Fixture.getAllMarkup() ); > } >+ >+ public void testWriteUiRequestNeededAfterWake() throws Throwable { >+ final Display display = new Display(); >+ UICallBackManager.getInstance().activateUICallBacksFor( "id" ); >+ Fixture.fakeNewRequest(); >+ >+ Runnable runnable = new Runnable() { >+ public void run() { >+ display.wake(); >+ } >+ }; >+ Fixture.runInThread( runnable ); >+ new UICallBackServiceHandler().service(); >+ >+ assertEquals( SEND_UI_REQUEST, Fixture.getAllMarkup() ); >+ } > > public void testWriteUICallBackActivateWithoutStateInfo() throws Exception { > Fixture.replaceStateInfo( null );
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 353891
:
203819
| 203996