44
55package org .cef ;
66
7- import java .awt .Component ;
8- import java .awt .Container ;
9- import java .awt .FocusTraversalPolicy ;
10- import java .awt .KeyboardFocusManager ;
11- import java .awt .Point ;
12- import java .awt .Rectangle ;
13- import java .beans .PropertyChangeEvent ;
14- import java .beans .PropertyChangeListener ;
15- import java .nio .ByteBuffer ;
16- import java .util .Collection ;
17- import java .util .HashMap ;
18- import java .util .Vector ;
19-
20- import javax .swing .SwingUtilities ;
21-
227import org .cef .browser .CefBrowser ;
238import org .cef .browser .CefBrowserFactory ;
249import org .cef .browser .CefFrame ;
4833import org .cef .handler .CefRenderHandler ;
4934import org .cef .handler .CefRequestHandler ;
5035import org .cef .handler .CefResourceHandler ;
36+ import org .cef .handler .CefResourceRequestHandler ;
5137import org .cef .handler .CefWindowHandler ;
5238import org .cef .misc .BoolRef ;
5339import org .cef .misc .StringRef ;
5743import org .cef .network .CefURLRequest ;
5844import org .cef .network .CefWebPluginInfo ;
5945
46+ import java .awt .Component ;
47+ import java .awt .Container ;
48+ import java .awt .FocusTraversalPolicy ;
49+ import java .awt .KeyboardFocusManager ;
50+ import java .awt .Point ;
51+ import java .awt .Rectangle ;
52+ import java .beans .PropertyChangeEvent ;
53+ import java .beans .PropertyChangeListener ;
54+ import java .nio .ByteBuffer ;
55+ import java .util .Collection ;
56+ import java .util .HashMap ;
57+ import java .util .Vector ;
58+
59+ import javax .swing .SwingUtilities ;
60+
6061/**
6162 * Client that owns a browser and renderer.
6263 */
@@ -79,6 +80,19 @@ public class CefClient extends CefClientHandler
7980 private CefRequestHandler requestHandler_ = null ;
8081 private boolean isDisposed_ = false ;
8182 private volatile CefBrowser focusedBrowser_ = null ;
83+ private final PropertyChangeListener propertyChangeListener = new PropertyChangeListener () {
84+ @ Override
85+ public void propertyChange (PropertyChangeEvent evt ) {
86+ if (focusedBrowser_ != null ) {
87+ Component browserUI = focusedBrowser_ .getUIComponent ();
88+ Object oldUI = evt .getOldValue ();
89+ if (isPartOf (oldUI , browserUI )) {
90+ focusedBrowser_ .setFocus (false );
91+ focusedBrowser_ = null ;
92+ }
93+ }
94+ }
95+ };
8296
8397 /**
8498 * The CTOR is only accessible within this package.
@@ -89,20 +103,8 @@ public class CefClient extends CefClientHandler
89103 CefClient () throws UnsatisfiedLinkError {
90104 super ();
91105
92- KeyboardFocusManager km = KeyboardFocusManager .getCurrentKeyboardFocusManager ();
93- km .addPropertyChangeListener (new PropertyChangeListener () {
94- @ Override
95- public void propertyChange (PropertyChangeEvent evt ) {
96- if (focusedBrowser_ != null ) {
97- Component browserUI = focusedBrowser_ .getUIComponent ();
98- Object oldUI = evt .getOldValue ();
99- if (isPartOf (oldUI , browserUI )) {
100- focusedBrowser_ .setFocus (false );
101- focusedBrowser_ = null ;
102- }
103- }
104- }
105- });
106+ KeyboardFocusManager .getCurrentKeyboardFocusManager ().addPropertyChangeListener (
107+ propertyChangeListener );
106108 }
107109
108110 private boolean isPartOf (Object obj , Component browserUI ) {
@@ -516,6 +518,12 @@ public void onAfterCreated(CefBrowser browser) {
516518 if (lifeSpanHandler_ != null ) lifeSpanHandler_ .onAfterCreated (browser );
517519 }
518520
521+ @ Override
522+ public void onAfterParentChanged (CefBrowser browser ) {
523+ if (browser == null ) return ;
524+ if (lifeSpanHandler_ != null ) lifeSpanHandler_ .onAfterParentChanged (browser );
525+ }
526+
519527 @ Override
520528 public boolean doClose (CefBrowser browser ) {
521529 if (browser == null ) return false ;
@@ -548,6 +556,8 @@ private void cleanupBrowser(int identifier) {
548556 }
549557
550558 if (browser_ .isEmpty () && isDisposed_ ) {
559+ KeyboardFocusManager .getCurrentKeyboardFocusManager ().removePropertyChangeListener (
560+ propertyChangeListener );
551561 removeContextMenuHandler (this );
552562 removeDialogHandler (this );
553563 removeDisplayHandler (this );
@@ -709,49 +719,22 @@ public boolean onBeforeBrowse(CefBrowser browser, CefFrame frame, CefRequest req
709719 }
710720
711721 @ Override
712- public boolean onBeforeResourceLoad (CefBrowser browser , CefFrame frame , CefRequest request ) {
713- if (requestHandler_ != null && browser != null )
714- return requestHandler_ .onBeforeResourceLoad (browser , frame , request );
715- return false ;
716- }
717-
718- @ Override
719- public CefResourceHandler getResourceHandler (
720- CefBrowser browser , CefFrame frame , CefRequest request ) {
721- if (requestHandler_ != null && browser != null )
722- return requestHandler_ .getResourceHandler (browser , frame , request );
722+ public CefResourceRequestHandler getResourceRequestHandler (CefBrowser browser , CefFrame frame ,
723+ CefRequest request , boolean isNavigation , boolean isDownload , String requestInitiator ,
724+ BoolRef disableDefaultHandling ) {
725+ if (requestHandler_ != null && browser != null ) {
726+ return requestHandler_ .getResourceRequestHandler (browser , frame , request , isNavigation ,
727+ isDownload , requestInitiator , disableDefaultHandling );
728+ }
723729 return null ;
724730 }
725731
726732 @ Override
727- public void onResourceRedirect (CefBrowser browser , CefFrame frame , CefRequest request ,
728- CefResponse response , StringRef new_url ) {
729- if (requestHandler_ != null && browser != null )
730- requestHandler_ .onResourceRedirect (browser , frame , request , response , new_url );
731- }
732-
733- @ Override
734- public boolean onResourceResponse (
735- CefBrowser browser , CefFrame frame , CefRequest request , CefResponse response ) {
736- if (requestHandler_ != null && browser != null )
737- return requestHandler_ .onResourceResponse (browser , frame , request , response );
738- return false ;
739- }
740-
741- @ Override
742- public void onResourceLoadComplete (CefBrowser browser , CefFrame frame , CefRequest request ,
743- CefResponse response , CefURLRequest .Status status , long receivedContentLength ) {
744- if (requestHandler_ != null && browser != null )
745- requestHandler_ .onResourceLoadComplete (
746- browser , frame , request , response , status , receivedContentLength );
747- }
748-
749- @ Override
750- public boolean getAuthCredentials (CefBrowser browser , CefFrame frame , boolean isProxy ,
733+ public boolean getAuthCredentials (CefBrowser browser , String origin_url , boolean isProxy ,
751734 String host , int port , String realm , String scheme , CefAuthCallback callback ) {
752735 if (requestHandler_ != null && browser != null )
753736 return requestHandler_ .getAuthCredentials (
754- browser , frame , isProxy , host , port , realm , scheme , callback );
737+ browser , origin_url , isProxy , host , port , realm , scheme , callback );
755738 return false ;
756739 }
757740
@@ -763,12 +746,6 @@ public boolean onQuotaRequest(
763746 return false ;
764747 }
765748
766- @ Override
767- public void onProtocolExecution (CefBrowser browser , String url , BoolRef allow_os_execution ) {
768- if (requestHandler_ != null && browser != null )
769- requestHandler_ .onProtocolExecution (browser , url , allow_os_execution );
770- }
771-
772749 @ Override
773750 public boolean onCertificateError (CefBrowser browser , ErrorCode cert_error , String request_url ,
774751 CefRequestCallback callback ) {
0 commit comments