@@ -940,7 +940,29 @@ void create(std::shared_ptr<JNIObjectsForCreate> objs,
940940 if (!lifeSpanHandler.get ())
941941 return ;
942942
943+ CefRefPtr<CefBrowser> parentBrowser =
944+ GetCefFromJNIObject<CefBrowser>(env, objs->jparentBrowser , " CefBrowser" );
945+
943946 CefWindowInfo windowInfo;
947+ CefBrowserSettings settings;
948+
949+ // If parentBrowser is set, we want to show the DEV-Tools for that browser.
950+ // Since that cannot be an Alloy-style window, it cannot be integrated into
951+ // Java UI but must be opened as a pop-up.
952+ if (parentBrowser.get () != nullptr ) {
953+ CefPoint inspectAt;
954+ if (objs->jinspectAt != nullptr ) {
955+ int x, y;
956+ GetJNIPoint (env, objs->jinspectAt , &x, &y);
957+ inspectAt.Set (x, y);
958+ }
959+
960+ parentBrowser->GetHost ()->ShowDevTools (windowInfo, clientHandler.get (),
961+ settings, inspectAt);
962+ JNI_CALL_VOID_METHOD (env, objs->jbrowser , " notifyBrowserCreated" , " ()V" );
963+ return ;
964+ }
965+
944966 if (osr == JNI_FALSE) {
945967 CefRect rect;
946968 CefRefPtr<WindowHandler> windowHandler =
@@ -978,8 +1000,6 @@ void create(std::shared_ptr<JNIObjectsForCreate> objs,
9781000 windowInfo.SetAsWindowless ((CefWindowHandle)windowHandle);
9791001 }
9801002
981- CefBrowserSettings settings;
982-
9831003 if (transparent == JNI_FALSE) {
9841004 // Specify an opaque background color (white) to disable transparency.
9851005 settings.background_color = CefColorSetARGB (255 , 255 , 255 , 255 );
@@ -998,27 +1018,10 @@ void create(std::shared_ptr<JNIObjectsForCreate> objs,
9981018 CefRefPtr<CefRequestContext> context = GetCefFromJNIObject<CefRequestContext>(
9991019 env, objs->jcontext , " CefRequestContext" );
10001020
1001- CefRefPtr<CefBrowser> parentBrowser =
1002- GetCefFromJNIObject<CefBrowser>(env, objs->jparentBrowser , " CefBrowser" );
1003-
10041021 // Add a global ref that will be released in LifeSpanHandler::OnAfterCreated.
10051022 jobject globalRef = env->NewGlobalRef (objs->jbrowser );
10061023 lifeSpanHandler->registerJBrowser (globalRef);
10071024
1008- // If parentBrowser is set, we want to show the DEV-Tools for that browser
1009- if (parentBrowser.get () != nullptr ) {
1010- CefPoint inspectAt;
1011- if (objs->jinspectAt != nullptr ) {
1012- int x, y;
1013- GetJNIPoint (env, objs->jinspectAt , &x, &y);
1014- inspectAt.Set (x, y);
1015- }
1016- parentBrowser->GetHost ()->ShowDevTools (windowInfo, clientHandler.get (),
1017- settings, inspectAt);
1018- JNI_CALL_VOID_METHOD (env, objs->jbrowser , " notifyBrowserCreated" , " ()V" );
1019- return ;
1020- }
1021-
10221025 CefRefPtr<CefDictionaryValue> extra_info;
10231026 auto router_configs = BrowserProcessHandler::GetMessageRouterConfigs ();
10241027 if (router_configs) {
@@ -1027,6 +1030,10 @@ void create(std::shared_ptr<JNIObjectsForCreate> objs,
10271030 extra_info->SetList (" router_configs" , router_configs);
10281031 }
10291032
1033+ // JCEF requires Alloy runtime style for "normal" browsers in order for them
1034+ // to be integratable into Java UI.
1035+ windowInfo.runtime_style = CEF_RUNTIME_STYLE_ALLOY;
1036+
10301037 bool result = CefBrowserHost::CreateBrowser (
10311038 windowInfo, clientHandler.get (), strUrl, settings, extra_info, context);
10321039 if (!result) {
@@ -1524,7 +1531,6 @@ Java_org_cef_browser_CefBrowser_1N_N_1SetWindowVisibility(JNIEnv* env,
15241531 }
15251532#endif
15261533}
1527-
15281534JNIEXPORT jdouble JNICALL
15291535Java_org_cef_browser_CefBrowser_1N_N_1GetZoomLevel (JNIEnv* env, jobject obj) {
15301536 CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN (env, obj, 0.0 );
0 commit comments