1 // Copyright 2015 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.native_test; 6 7 import android.app.Activity; 8 9 import org.chromium.base.ApplicationStatus; 10 import org.chromium.base.ContextUtils; 11 import org.chromium.base.Log; 12 import org.chromium.base.PathUtils; 13 import org.chromium.base.PowerMonitor; 14 import org.chromium.base.library_loader.LibraryLoader; 15 16 /** 17 * A helper for running native unit tests (i.e., not browser tests) 18 */ 19 public class NativeUnitTest extends NativeTest { 20 private static final String TAG = "NativeTest"; 21 22 private static final String LIBRARY_UNDER_TEST_NAME = 23 "org.chromium.native_test.NativeTestInstrumentationTestRunner.LibraryUnderTest"; 24 private static class NativeUnitTestLibraryLoader extends LibraryLoader { setLibrariesLoaded()25 static void setLibrariesLoaded() { 26 LibraryLoader.setLibrariesLoadedForNativeTests(); 27 } 28 } 29 30 @Override preCreate(Activity activity)31 public void preCreate(Activity activity) { 32 super.preCreate(activity); 33 // Necessary because NativeUnitTestActivity uses BaseChromiumApplication which does not 34 // initialize ContextUtils. 35 ContextUtils.initApplicationContext(activity.getApplicationContext()); 36 37 // Necessary because BaseChromiumApplication no longer automatically initializes application 38 // tracking. 39 ApplicationStatus.initialize(activity.getApplication()); 40 41 // Needed by path_utils_unittest.cc 42 PathUtils.setPrivateDataDirectorySuffix("chrome"); 43 44 // Needed by system_monitor_unittest.cc 45 PowerMonitor.createForTests(); 46 47 // For NativeActivity based tests, 48 // dependency libraries must be loaded before NativeActivity::OnCreate, 49 // otherwise loading android.app.lib_name will fail 50 String libraryToLoad = activity.getIntent().getStringExtra(LIBRARY_UNDER_TEST_NAME); 51 if (libraryToLoad != null) { 52 loadLibrary(libraryToLoad); 53 } else { 54 Log.e(TAG, "No Library provided for native tests! Exiting"); 55 activity.finish(); 56 } 57 } 58 loadLibrary(String library)59 private void loadLibrary(String library) { 60 61 LibraryLoader.setEnvForNative(); 62 Log.i(TAG, "loading: %s", library); 63 System.loadLibrary(library); 64 Log.i(TAG, "loaded: %s", library); 65 NativeUnitTestLibraryLoader.setLibrariesLoaded(); 66 } 67 } 68