diff options
author | xunjieli <xunjieli@chromium.org> | 2015-06-04 13:53:23 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-04 20:54:05 +0000 |
commit | 6f35690cc4b5e69734bc469f11218ea92ac24c08 (patch) | |
tree | 6f14f825a18e14d207c94599e72fbe06308a8130 /components | |
parent | 2ce2e8aabd8c59b006c24ea4cda5aa92398a9e2b (diff) | |
download | chromium_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.gypi | 35 | ||||
-rw-r--r-- | components/cronet/android/cronet_library_loader.cc | 5 | ||||
-rw-r--r-- | components/cronet/android/java/src/org/chromium/net/CronetLibraryLoader.java | 8 | ||||
-rw-r--r-- | components/cronet/cronet_static.gypi | 1 | ||||
-rw-r--r-- | components/cronet/version.h.in | 12 |
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_ |