Support narrower module dependencies
Reviewed By: javache Differential Revision: D4772632 fbshipit-source-id: 615bf8998a3817364d0f8bd435c95c2c1f1bebed
This commit is contained in:
parent
5f5da4e122
commit
0b2ac0ada8
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2015-present, Facebook, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the BSD-style license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.facebook.react.bridge;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for React native modules that require access to an Android
|
||||||
|
* {@link Context} instance.
|
||||||
|
*/
|
||||||
|
public abstract class ContextBaseJavaModule extends BaseJavaModule {
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
|
public ContextBaseJavaModule(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subclasses can use this method to access Android context passed as a constructor
|
||||||
|
*/
|
||||||
|
protected final Context getContext() {
|
||||||
|
return mContext;
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,10 +12,10 @@ package com.facebook.react.modules.clipboard;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import com.facebook.react.bridge.ReactApplicationContext;
|
import com.facebook.react.bridge.ContextBaseJavaModule;
|
||||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
||||||
import com.facebook.react.bridge.ReactMethod;
|
import com.facebook.react.bridge.ReactMethod;
|
||||||
import com.facebook.react.bridge.Promise;
|
import com.facebook.react.bridge.Promise;
|
||||||
import com.facebook.react.module.annotations.ReactModule;
|
import com.facebook.react.module.annotations.ReactModule;
|
||||||
|
@ -24,10 +24,10 @@ import com.facebook.react.module.annotations.ReactModule;
|
||||||
* A module that allows JS to get/set clipboard contents.
|
* A module that allows JS to get/set clipboard contents.
|
||||||
*/
|
*/
|
||||||
@ReactModule(name = "Clipboard")
|
@ReactModule(name = "Clipboard")
|
||||||
public class ClipboardModule extends ReactContextBaseJavaModule {
|
public class ClipboardModule extends ContextBaseJavaModule {
|
||||||
|
|
||||||
public ClipboardModule(ReactApplicationContext reactContext) {
|
public ClipboardModule(Context context) {
|
||||||
super(reactContext);
|
super(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -36,7 +36,7 @@ public class ClipboardModule extends ReactContextBaseJavaModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ClipboardManager getClipboardService() {
|
private ClipboardManager getClipboardService() {
|
||||||
return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);
|
return (ClipboardManager) getContext().getSystemService(getContext().CLIPBOARD_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
|
@ -60,7 +60,6 @@ public class ClipboardModule extends ReactContextBaseJavaModule {
|
||||||
@SuppressLint("DeprecatedMethod")
|
@SuppressLint("DeprecatedMethod")
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void setString(String text) {
|
public void setString(String text) {
|
||||||
ReactApplicationContext reactContext = getReactApplicationContext();
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||||
ClipData clipdata = ClipData.newPlainText(null, text);
|
ClipData clipdata = ClipData.newPlainText(null, text);
|
||||||
ClipboardManager clipboard = getClipboardService();
|
ClipboardManager clipboard = getClipboardService();
|
||||||
|
|
|
@ -35,14 +35,18 @@ std::unique_ptr<ModuleRegistry> buildModuleRegistry(
|
||||||
jni::alias_ref<jni::JCollection<ModuleHolder::javaobject>::javaobject> cxxModules,
|
jni::alias_ref<jni::JCollection<ModuleHolder::javaobject>::javaobject> cxxModules,
|
||||||
std::shared_ptr<MessageQueueThread> moduleMessageQueue) {
|
std::shared_ptr<MessageQueueThread> moduleMessageQueue) {
|
||||||
std::vector<std::unique_ptr<NativeModule>> modules;
|
std::vector<std::unique_ptr<NativeModule>> modules;
|
||||||
|
if (javaModules) {
|
||||||
for (const auto& jm : *javaModules) {
|
for (const auto& jm : *javaModules) {
|
||||||
modules.emplace_back(folly::make_unique<JavaNativeModule>(
|
modules.emplace_back(folly::make_unique<JavaNativeModule>(
|
||||||
winstance, jm, moduleMessageQueue));
|
winstance, jm, moduleMessageQueue));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (cxxModules) {
|
||||||
for (const auto& cm : *cxxModules) {
|
for (const auto& cm : *cxxModules) {
|
||||||
modules.emplace_back(folly::make_unique<CxxNativeModule>(
|
modules.emplace_back(folly::make_unique<CxxNativeModule>(
|
||||||
winstance, cm->getName(), cm->getProvider(), moduleMessageQueue));
|
winstance, cm->getName(), cm->getProvider(), moduleMessageQueue));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (modules.empty()) {
|
if (modules.empty()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class ClipboardModuleTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mClipboardModule = new ClipboardModule(ReactTestHelper.createCatalystContextForTest());
|
mClipboardModule = new ClipboardModule(RuntimeEnvironment.application);
|
||||||
mClipboardManager =
|
mClipboardManager =
|
||||||
(ClipboardManager) RuntimeEnvironment.application.getSystemService(Context.CLIPBOARD_SERVICE);
|
(ClipboardManager) RuntimeEnvironment.application.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue