Skip to content

Commit ebd7474

Browse files
committed
Convert remaining classes to use scoped helpers (see issue chromiumembedded#167)
1 parent d8bb155 commit ebd7474

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1122
-1137
lines changed

native/CefAuthCallback_N.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "CefAuthCallback_N.h"
66
#include "include/cef_request_handler.h"
7+
#include "jni_scoped_helpers.h"
78
#include "jni_util.h"
89

910
namespace {

native/CefBeforeDownloadCallback_N.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "CefBeforeDownloadCallback_N.h"
66
#include "include/cef_download_handler.h"
7+
#include "jni_scoped_helpers.h"
78
#include "jni_util.h"
89

910
namespace {

native/CefBrowser_N.cpp

Lines changed: 90 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,6 +1020,90 @@ void OnAfterParentChanged(CefRefPtr<CefBrowser> browser) {
10201020
}
10211021
}
10221022

1023+
jobject NewJNILongVector(JNIEnv* env, const std::vector<int64>& vals) {
1024+
ScopedJNIObjectLocal jvector(env, "java/util/Vector");
1025+
if (!jvector)
1026+
return NULL;
1027+
1028+
std::vector<int64>::const_iterator iter;
1029+
for (iter = vals.begin(); iter != vals.end(); ++iter) {
1030+
ScopedJNIObjectLocal argument(
1031+
env, NewJNIObject(env, "java/lang/Long", "(J)V", (jlong)*iter));
1032+
JNI_CALL_VOID_METHOD(env, jvector, "addElement", "(Ljava/lang/Object;)V",
1033+
argument.get());
1034+
}
1035+
return jvector.Release();
1036+
}
1037+
1038+
CefPdfPrintSettings GetJNIPdfPrintSettings(JNIEnv* env, jobject obj) {
1039+
CefString tmp;
1040+
CefPdfPrintSettings settings;
1041+
if (!obj)
1042+
return settings;
1043+
1044+
ScopedJNIClass cls(env, "org/cef/misc/CefPdfPrintSettings");
1045+
if (!cls)
1046+
return settings;
1047+
1048+
GetJNIFieldBoolean(env, cls, obj, "header_footer_enabled",
1049+
&settings.header_footer_enabled);
1050+
1051+
if (GetJNIFieldString(env, cls, obj, "header_footer_title", &tmp) &&
1052+
!tmp.empty()) {
1053+
CefString(&settings.header_footer_title) = tmp;
1054+
tmp.clear();
1055+
}
1056+
1057+
if (GetJNIFieldString(env, cls, obj, "header_footer_url", &tmp) &&
1058+
!tmp.empty()) {
1059+
CefString(&settings.header_footer_url) = tmp;
1060+
tmp.clear();
1061+
}
1062+
1063+
GetJNIFieldBoolean(env, cls, obj, "landscape", &settings.landscape);
1064+
1065+
GetJNIFieldBoolean(env, cls, obj, "backgrounds_enabled",
1066+
&settings.backgrounds_enabled);
1067+
1068+
GetJNIFieldInt(env, cls, obj, "page_width", &settings.page_width);
1069+
1070+
GetJNIFieldInt(env, cls, obj, "page_height", &settings.page_height);
1071+
1072+
GetJNIFieldBoolean(env, cls, obj, "selection_only", &settings.selection_only);
1073+
1074+
GetJNIFieldInt(env, cls, obj, "scale_factor", &settings.scale_factor);
1075+
1076+
jobject obj_margin_type = NULL;
1077+
if (GetJNIFieldObject(env, cls, obj, "margin_type", &obj_margin_type,
1078+
"Lorg/cef/misc/CefPdfPrintSettings$MarginType;")) {
1079+
ScopedJNIObjectLocal margin_type(env, obj_margin_type);
1080+
if (IsJNIEnumValue(env, margin_type,
1081+
"org/cef/misc/CefPdfPrintSettings$MarginType",
1082+
"DEFAULT")) {
1083+
settings.margin_type = PDF_PRINT_MARGIN_DEFAULT;
1084+
} else if (IsJNIEnumValue(env, margin_type,
1085+
"org/cef/misc/CefPdfPrintSettings$MarginType",
1086+
"NONE")) {
1087+
settings.margin_type = PDF_PRINT_MARGIN_NONE;
1088+
} else if (IsJNIEnumValue(env, margin_type,
1089+
"org/cef/misc/CefPdfPrintSettings$MarginType",
1090+
"MINIMUM")) {
1091+
settings.margin_type = PDF_PRINT_MARGIN_MINIMUM;
1092+
} else if (IsJNIEnumValue(env, margin_type,
1093+
"org/cef/misc/CefPdfPrintSettings$MarginType",
1094+
"CUSTOM")) {
1095+
settings.margin_type = PDF_PRINT_MARGIN_CUSTOM;
1096+
}
1097+
}
1098+
1099+
GetJNIFieldInt(env, cls, obj, "margin_top", &settings.margin_top);
1100+
GetJNIFieldInt(env, cls, obj, "margin_bottom", &settings.margin_bottom);
1101+
GetJNIFieldInt(env, cls, obj, "margin_right", &settings.margin_right);
1102+
GetJNIFieldInt(env, cls, obj, "margin_left", &settings.margin_left);
1103+
1104+
return settings;
1105+
}
1106+
10231107
} // namespace
10241108

10251109
JNIEXPORT jboolean JNICALL
@@ -1473,7 +1557,7 @@ Java_org_cef_browser_CefBrowser_1N_N_1SendKeyEvent(JNIEnv* env,
14731557
jobject obj,
14741558
jobject key_event) {
14751559
CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
1476-
jclass cls = env->GetObjectClass(key_event);
1560+
ScopedJNIClass cls(env, env->GetObjectClass(key_event));
14771561
if (!cls)
14781562
return;
14791563

@@ -1688,7 +1772,7 @@ Java_org_cef_browser_CefBrowser_1N_N_1SendMouseEvent(JNIEnv* env,
16881772
jobject obj,
16891773
jobject mouse_event) {
16901774
CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
1691-
jclass cls = env->GetObjectClass(mouse_event);
1775+
ScopedJNIClass cls(env, env->GetObjectClass(mouse_event));
16921776
if (!cls)
16931777
return;
16941778

@@ -1753,7 +1837,7 @@ Java_org_cef_browser_CefBrowser_1N_N_1SendMouseWheelEvent(
17531837
jobject obj,
17541838
jobject mouse_wheel_event) {
17551839
CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
1756-
jclass cls = env->GetObjectClass(mouse_wheel_event);
1840+
ScopedJNIClass cls(env, env->GetObjectClass(mouse_wheel_event));
17571841
if (!cls)
17581842
return;
17591843

@@ -1802,7 +1886,7 @@ Java_org_cef_browser_CefBrowser_1N_N_1DragTargetDragEnter(JNIEnv* env,
18021886
GetCefFromJNIObject<CefDragData>(env, jdragData, "CefDragData");
18031887
if (!drag_data.get())
18041888
return;
1805-
jclass cls = FindClass(env, "java/awt/event/MouseEvent");
1889+
ScopedJNIClass cls(env, "java/awt/event/MouseEvent");
18061890
if (!cls)
18071891
return;
18081892

@@ -1821,7 +1905,7 @@ Java_org_cef_browser_CefBrowser_1N_N_1DragTargetDragOver(JNIEnv* env,
18211905
jobject pos,
18221906
jint jmodifiers,
18231907
jint allowedOps) {
1824-
jclass cls = FindClass(env, "java/awt/event/MouseEvent");
1908+
ScopedJNIClass cls(env, "java/awt/event/MouseEvent");
18251909
if (!cls)
18261910
return;
18271911

@@ -1846,7 +1930,7 @@ Java_org_cef_browser_CefBrowser_1N_N_1DragTargetDrop(JNIEnv* env,
18461930
jobject obj,
18471931
jobject pos,
18481932
jint jmodifiers) {
1849-
jclass cls = FindClass(env, "java/awt/event/MouseEvent");
1933+
ScopedJNIClass cls(env, "java/awt/event/MouseEvent");
18501934
if (!cls)
18511935
return;
18521936

native/CefCallback_N.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
#include "CefCallback_N.h"
66
#include "include/cef_callback.h"
7-
#include "jni_util.h"
7+
#include "jni_scoped_helpers.h"
88

99
namespace {
1010

native/CefCommandLine_N.cpp

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,7 @@ Java_org_cef_callback_CefCommandLine_1N_N_1GetSwitches(JNIEnv* env,
8787
CefCommandLine::SwitchMap switches;
8888
if (commandLine)
8989
commandLine->GetSwitches(switches);
90-
91-
jobject hashMap = NewJNIObject(env, "java/util/HashMap");
92-
if (!hashMap)
93-
return NULL;
94-
95-
for (CefCommandLine::SwitchMap::iterator iter = switches.begin();
96-
iter != switches.end(); ++iter) {
97-
ScopedJNIString jkey(env, iter->first);
98-
ScopedJNIString jvalue(env, iter->second);
99-
ScopedJNIObjectResult jresult(env);
100-
JNI_CALL_METHOD(env, hashMap, "put",
101-
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
102-
Object, jresult, jkey.get(), jvalue.get());
103-
}
104-
return hashMap;
90+
return NewJNIStringMap(env, switches);
10591
}
10692

10793
JNIEXPORT void JNICALL
@@ -147,20 +133,7 @@ Java_org_cef_callback_CefCommandLine_1N_N_1GetArguments(JNIEnv* env,
147133
CefCommandLine::ArgumentList arguments;
148134
if (commandLine)
149135
commandLine->GetArguments(arguments);
150-
151-
jobject vector = NewJNIObject(env, "java/util/Vector");
152-
if (!vector)
153-
return NULL;
154-
155-
for (CefCommandLine::ArgumentList::iterator iter = arguments.begin();
156-
iter != arguments.end(); ++iter) {
157-
ScopedJNIString jargument(env, *iter);
158-
jboolean succ = JNI_FALSE;
159-
JNI_CALL_METHOD(env, vector, "add", "(Ljava/lang/Object;)Z", Boolean, succ,
160-
jargument.get());
161-
UNUSED(succ);
162-
}
163-
return vector;
136+
return NewJNIStringVector(env, arguments);
164137
}
165138

166139
JNIEXPORT void JNICALL

native/CefCookieManager_N.cpp

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "completion_callback.h"
1313
#include "cookie_visitor.h"
14+
#include "jni_scoped_helpers.h"
1415
#include "jni_util.h"
1516

1617
namespace {
@@ -20,6 +21,39 @@ const char kCefClassName[] = "CefCookieManager";
2021
CefRefPtr<CefCookieManager> GetSelf(jlong self) {
2122
return reinterpret_cast<CefCookieManager*>(self);
2223
}
24+
25+
CefCookie GetJNICookie(JNIEnv* env, jobject jcookie) {
26+
CefCookie cookie;
27+
28+
ScopedJNIClass cls(env, "org/cef/network/CefCookie");
29+
if (!cls)
30+
return cookie;
31+
32+
CefString name(&cookie.name);
33+
CefString value(&cookie.value);
34+
CefString domain(&cookie.domain);
35+
CefString path(&cookie.path);
36+
CefTime creation, lastAccess, expires;
37+
38+
GetJNIFieldString(env, cls, jcookie, "name", &name);
39+
GetJNIFieldString(env, cls, jcookie, "value", &value);
40+
GetJNIFieldString(env, cls, jcookie, "domain", &domain);
41+
GetJNIFieldString(env, cls, jcookie, "path", &path);
42+
GetJNIFieldBoolean(env, cls, jcookie, "secure", &cookie.secure);
43+
GetJNIFieldBoolean(env, cls, jcookie, "httponly", &cookie.httponly);
44+
GetJNIFieldDate(env, cls, jcookie, "creation", &creation);
45+
cookie.creation = creation;
46+
GetJNIFieldDate(env, cls, jcookie, "lastAccess", &lastAccess);
47+
cookie.last_access = lastAccess;
48+
GetJNIFieldBoolean(env, cls, jcookie, "hasExpires", &cookie.has_expires);
49+
if (cookie.has_expires) {
50+
GetJNIFieldDate(env, cls, jcookie, "expires", &expires);
51+
cookie.expires = expires;
52+
}
53+
54+
return cookie;
55+
}
56+
2357
} // namespace
2458

2559
JNIEXPORT jobject JNICALL
@@ -31,12 +65,12 @@ Java_org_cef_network_CefCookieManager_1N_N_1GetGlobalManager(JNIEnv* env,
3165
if (!manager)
3266
return NULL;
3367

34-
jobject jManager = NewJNIObject(env, cls);
68+
ScopedJNIObjectLocal jManager(env, NewJNIObject(env, cls));
3569
if (!jManager)
3670
return NULL;
3771

3872
SetCefForJNIObject(env, jManager, manager.get(), kCefClassName);
39-
return jManager;
73+
return jManager.Release();
4074
}
4175

4276
JNIEXPORT void JNICALL

native/CefDownloadItemCallback_N.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
#include "CefDownloadItemCallback_N.h"
66
#include "include/cef_download_handler.h"
7-
#include "jni_util.h"
7+
#include "jni_scoped_helpers.h"
88

99
namespace {
1010

native/CefDownloadItem_N.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "CefDownloadItem_N.h"
66
#include "include/cef_download_item.h"
7+
#include "jni_scoped_helpers.h"
78
#include "jni_util.h"
89

910
namespace {
@@ -101,8 +102,8 @@ Java_org_cef_callback_CefDownloadItem_1N_N_1GetStartTime(JNIEnv* env,
101102
CefRefPtr<CefDownloadItem> downloadItem = GetSelf(self);
102103
if (!downloadItem)
103104
return NULL;
104-
CefTime start = downloadItem->GetStartTime();
105-
return NewJNIDate(env, start);
105+
ScopedJNIDate jdate(env, downloadItem->GetStartTime());
106+
return jdate.Release();
106107
}
107108

108109
JNIEXPORT jobject JNICALL
@@ -112,8 +113,8 @@ Java_org_cef_callback_CefDownloadItem_1N_N_1GetEndTime(JNIEnv* env,
112113
CefRefPtr<CefDownloadItem> downloadItem = GetSelf(self);
113114
if (!downloadItem)
114115
return NULL;
115-
CefTime end = downloadItem->GetEndTime();
116-
return NewJNIDate(env, end);
116+
ScopedJNIDate jdate(env, downloadItem->GetEndTime());
117+
return jdate.Release();
117118
}
118119

119120
JNIEXPORT jstring JNICALL

native/CefFileDialogCallback_N.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "CefFileDialogCallback_N.h"
66
#include "include/cef_dialog_handler.h"
7+
#include "jni_scoped_helpers.h"
78
#include "jni_util.h"
89

910
namespace {

native/CefJSDialogCallback_N.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "CefJSDialogCallback_N.h"
66
#include "include/cef_jsdialog_handler.h"
7+
#include "jni_scoped_helpers.h"
78
#include "jni_util.h"
89

910
namespace {

0 commit comments

Comments
 (0)