summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorxunjieli <xunjieli@chromium.org>2015-06-04 13:53:23 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-04 20:54:05 +0000
commit6f35690cc4b5e69734bc469f11218ea92ac24c08 (patch)
tree6f14f825a18e14d207c94599e72fbe06308a8130 /components
parent2ce2e8aabd8c59b006c24ea4cda5aa92398a9e2b (diff)
downloadchromium_src-6f35690cc4b5e69734bc469f11218ea92ac24c08.zip
chromium_src-6f35690cc4b5e69734bc469f11218ea92ac24c08.tar.gz
chromium_src-6f35690cc4b5e69734bc469f11218ea92ac24c08.tar.bz2
[Cronet] Check native library version.
This CL checks Cronet native library version with java version and make sure the versions match. BUG=493222 Review URL: https://codereview.chromium.org/1158323007 Cr-Commit-Position: refs/heads/master@{#332905}
Diffstat (limited to 'components')
-rw-r--r--components/cronet.gypi35
-rw-r--r--components/cronet/android/cronet_library_loader.cc5
-rw-r--r--components/cronet/android/java/src/org/chromium/net/CronetLibraryLoader.java8
-rw-r--r--components/cronet/cronet_static.gypi1
-rw-r--r--components/cronet/version.h.in12
5 files changed, 61 insertions, 0 deletions
diff --git a/components/cronet.gypi b/components/cronet.gypi
index 4fb3fb9..e71e061 100644
--- a/components/cronet.gypi
+++ b/components/cronet.gypi
@@ -99,6 +99,41 @@
],
},
{
+ 'target_name': 'cronet_version_header',
+ 'type': 'none',
+ # Need to set hard_depency flag because cronet_version generates a
+ # header.
+ 'hard_dependency': 1,
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(SHARED_INTERMEDIATE_DIR)/',
+ ],
+ },
+ 'actions': [
+ {
+ 'action_name': 'version_header',
+ 'message': 'Generating version header file: <@(_outputs)',
+ 'inputs': [
+ '<(version_path)',
+ 'cronet/version.h.in',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/components/cronet/version.h',
+ ],
+ 'action': [
+ 'python',
+ '<(version_py_path)',
+ '-e', 'VERSION_FULL="<(version_full)"',
+ 'cronet/version.h.in',
+ '<@(_outputs)',
+ ],
+ 'includes': [
+ '../build/util/version.gypi',
+ ],
+ },
+ ],
+ },
+ {
# cronet_static_small target has reduced binary size through using
# ICU alternatives which requires file and ftp support be disabled.
'target_name': 'cronet_static_small',
diff --git a/components/cronet/android/cronet_library_loader.cc b/components/cronet/android/cronet_library_loader.cc
index b1d4542..ddc5f1b 100644
--- a/components/cronet/android/cronet_library_loader.cc
+++ b/components/cronet/android/cronet_library_loader.cc
@@ -21,6 +21,7 @@
#include "components/cronet/android/cronet_upload_data_stream_adapter.h"
#include "components/cronet/android/cronet_url_request_adapter.h"
#include "components/cronet/android/cronet_url_request_context_adapter.h"
+#include "components/cronet/version.h"
#include "jni/CronetLibraryLoader_jni.h"
#include "net/android/net_jni_registrar.h"
#include "net/android/network_change_notifier_factory_android.h"
@@ -112,4 +113,8 @@ void CronetInitOnMainThread(JNIEnv* env, jclass jcaller) {
g_network_change_notifier = net::NetworkChangeNotifier::Create();
}
+jstring GetCronetVersion(JNIEnv* env, jclass jcaller) {
+ return base::android::ConvertUTF8ToJavaString(env, CRONET_VERSION).Release();
+}
+
} // namespace cronet
diff --git a/components/cronet/android/java/src/org/chromium/net/CronetLibraryLoader.java b/components/cronet/android/java/src/org/chromium/net/CronetLibraryLoader.java
index 2cf9b16..95e9559 100644
--- a/components/cronet/android/java/src/org/chromium/net/CronetLibraryLoader.java
+++ b/components/cronet/android/java/src/org/chromium/net/CronetLibraryLoader.java
@@ -32,6 +32,13 @@ class CronetLibraryLoader {
return;
}
System.loadLibrary(config.libraryName());
+ if (!Version.CRONET_VERSION.equals(nativeGetCronetVersion())) {
+ throw new RuntimeException(String.format(
+ "Expected Cronet version number %s, "
+ + "actual version number %s.",
+ Version.CRONET_VERSION,
+ nativeGetCronetVersion()));
+ }
nativeCronetInitApplicationContext(context.getApplicationContext());
// Init native Chromium URLRequestContext on Main UI thread.
Runnable task = new Runnable() {
@@ -69,4 +76,5 @@ class CronetLibraryLoader {
// Native methods are implemented in cronet_loader.cc.
private static native void nativeCronetInitOnMainThread();
private static native void nativeCronetInitApplicationContext(Context appContext);
+ private static native String nativeGetCronetVersion();
}
diff --git a/components/cronet/cronet_static.gypi b/components/cronet/cronet_static.gypi
index b04f778..9ce059e 100644
--- a/components/cronet/cronet_static.gypi
+++ b/components/cronet/cronet_static.gypi
@@ -12,6 +12,7 @@
'cronet_url_request_context_config_list',
'cronet_url_request_java',
'cronet_version',
+ 'cronet_version_header',
'metrics',
],
'sources': [
diff --git a/components/cronet/version.h.in b/components/cronet/version.h.in
new file mode 100644
index 0000000..013b667
--- /dev/null
+++ b/components/cronet/version.h.in
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// version.h is generated from version.h.in. Edit the source!
+
+#ifndef COMPONENTS_CRONET_VERSION_H_
+#define COMPONENTS_CRONET_VERSION_H_
+
+#define CRONET_VERSION "@VERSION_FULL@"
+
+#endif // COMPONENTS_CRONET_VERSION_H_