1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker * Copyright 2015 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker *
4*ec779b8eSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker *
8*ec779b8eSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker *
10*ec779b8eSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker */
16*ec779b8eSAndroid Build Coastguard Worker
17*ec779b8eSAndroid Build Coastguard Worker #include <gtest/gtest.h>
18*ec779b8eSAndroid Build Coastguard Worker #include <android/binder_process.h>
19*ec779b8eSAndroid Build Coastguard Worker
20*ec779b8eSAndroid Build Coastguard Worker #include "ResourceManagerService.h"
21*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/media/BnResourceManagerClient.h>
22*ec779b8eSAndroid Build Coastguard Worker #include <media/MediaResource.h>
23*ec779b8eSAndroid Build Coastguard Worker #include <media/MediaResourcePolicy.h>
24*ec779b8eSAndroid Build Coastguard Worker #include <media/stagefright/foundation/ADebug.h>
25*ec779b8eSAndroid Build Coastguard Worker #include <mediautils/ProcessInfoInterface.h>
26*ec779b8eSAndroid Build Coastguard Worker
27*ec779b8eSAndroid Build Coastguard Worker namespace android {
28*ec779b8eSAndroid Build Coastguard Worker
29*ec779b8eSAndroid Build Coastguard Worker using Status = ::ndk::ScopedAStatus;
30*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::BnResourceManagerClient;
31*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::IResourceManagerService;
32*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::IResourceManagerClient;
33*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::MediaResourceParcel;
34*ec779b8eSAndroid Build Coastguard Worker
getId(const std::shared_ptr<IResourceManagerClient> & client)35*ec779b8eSAndroid Build Coastguard Worker static int64_t getId(const std::shared_ptr<IResourceManagerClient>& client) {
36*ec779b8eSAndroid Build Coastguard Worker return (int64_t) client.get();
37*ec779b8eSAndroid Build Coastguard Worker }
38*ec779b8eSAndroid Build Coastguard Worker
39*ec779b8eSAndroid Build Coastguard Worker struct TestProcessInfo : public ProcessInfoInterface {
TestProcessInfoTestProcessInfo40*ec779b8eSAndroid Build Coastguard Worker TestProcessInfo() {}
~TestProcessInfoTestProcessInfo41*ec779b8eSAndroid Build Coastguard Worker virtual ~TestProcessInfo() {}
42*ec779b8eSAndroid Build Coastguard Worker
getPriorityTestProcessInfo43*ec779b8eSAndroid Build Coastguard Worker virtual bool getPriority(int pid, int *priority) {
44*ec779b8eSAndroid Build Coastguard Worker // For testing, use pid as priority.
45*ec779b8eSAndroid Build Coastguard Worker // Lower the value higher the priority.
46*ec779b8eSAndroid Build Coastguard Worker *priority = pid;
47*ec779b8eSAndroid Build Coastguard Worker return true;
48*ec779b8eSAndroid Build Coastguard Worker }
49*ec779b8eSAndroid Build Coastguard Worker
isPidTrustedTestProcessInfo50*ec779b8eSAndroid Build Coastguard Worker virtual bool isPidTrusted(int /* pid */) {
51*ec779b8eSAndroid Build Coastguard Worker return true;
52*ec779b8eSAndroid Build Coastguard Worker }
53*ec779b8eSAndroid Build Coastguard Worker
isPidUidTrustedTestProcessInfo54*ec779b8eSAndroid Build Coastguard Worker virtual bool isPidUidTrusted(int /* pid */, int /* uid */) {
55*ec779b8eSAndroid Build Coastguard Worker return true;
56*ec779b8eSAndroid Build Coastguard Worker }
57*ec779b8eSAndroid Build Coastguard Worker
overrideProcessInfoTestProcessInfo58*ec779b8eSAndroid Build Coastguard Worker virtual bool overrideProcessInfo(
59*ec779b8eSAndroid Build Coastguard Worker int /* pid */, int /* procState */, int /* oomScore */) {
60*ec779b8eSAndroid Build Coastguard Worker return true;
61*ec779b8eSAndroid Build Coastguard Worker }
62*ec779b8eSAndroid Build Coastguard Worker
removeProcessInfoOverrideTestProcessInfo63*ec779b8eSAndroid Build Coastguard Worker virtual void removeProcessInfoOverride(int /* pid */) {
64*ec779b8eSAndroid Build Coastguard Worker }
65*ec779b8eSAndroid Build Coastguard Worker
66*ec779b8eSAndroid Build Coastguard Worker private:
67*ec779b8eSAndroid Build Coastguard Worker DISALLOW_EVIL_CONSTRUCTORS(TestProcessInfo);
68*ec779b8eSAndroid Build Coastguard Worker };
69*ec779b8eSAndroid Build Coastguard Worker
70*ec779b8eSAndroid Build Coastguard Worker struct TestSystemCallback :
71*ec779b8eSAndroid Build Coastguard Worker public ResourceManagerService::SystemCallbackInterface {
TestSystemCallbackTestSystemCallback72*ec779b8eSAndroid Build Coastguard Worker TestSystemCallback() :
73*ec779b8eSAndroid Build Coastguard Worker mLastEvent({EventType::INVALID, 0}), mEventCount(0) {}
74*ec779b8eSAndroid Build Coastguard Worker
75*ec779b8eSAndroid Build Coastguard Worker enum EventType {
76*ec779b8eSAndroid Build Coastguard Worker INVALID = -1,
77*ec779b8eSAndroid Build Coastguard Worker VIDEO_ON = 0,
78*ec779b8eSAndroid Build Coastguard Worker VIDEO_OFF = 1,
79*ec779b8eSAndroid Build Coastguard Worker VIDEO_RESET = 2,
80*ec779b8eSAndroid Build Coastguard Worker CPUSET_ENABLE = 3,
81*ec779b8eSAndroid Build Coastguard Worker CPUSET_DISABLE = 4,
82*ec779b8eSAndroid Build Coastguard Worker };
83*ec779b8eSAndroid Build Coastguard Worker
84*ec779b8eSAndroid Build Coastguard Worker struct EventEntry {
85*ec779b8eSAndroid Build Coastguard Worker EventType type;
86*ec779b8eSAndroid Build Coastguard Worker int arg;
87*ec779b8eSAndroid Build Coastguard Worker };
88*ec779b8eSAndroid Build Coastguard Worker
noteStartVideoTestSystemCallback89*ec779b8eSAndroid Build Coastguard Worker virtual void noteStartVideo(int uid) override {
90*ec779b8eSAndroid Build Coastguard Worker mLastEvent = {EventType::VIDEO_ON, uid};
91*ec779b8eSAndroid Build Coastguard Worker mEventCount++;
92*ec779b8eSAndroid Build Coastguard Worker }
93*ec779b8eSAndroid Build Coastguard Worker
noteStopVideoTestSystemCallback94*ec779b8eSAndroid Build Coastguard Worker virtual void noteStopVideo(int uid) override {
95*ec779b8eSAndroid Build Coastguard Worker mLastEvent = {EventType::VIDEO_OFF, uid};
96*ec779b8eSAndroid Build Coastguard Worker mEventCount++;
97*ec779b8eSAndroid Build Coastguard Worker }
98*ec779b8eSAndroid Build Coastguard Worker
noteResetVideoTestSystemCallback99*ec779b8eSAndroid Build Coastguard Worker virtual void noteResetVideo() override {
100*ec779b8eSAndroid Build Coastguard Worker mLastEvent = {EventType::VIDEO_RESET, 0};
101*ec779b8eSAndroid Build Coastguard Worker mEventCount++;
102*ec779b8eSAndroid Build Coastguard Worker }
103*ec779b8eSAndroid Build Coastguard Worker
requestCpusetBoostTestSystemCallback104*ec779b8eSAndroid Build Coastguard Worker virtual bool requestCpusetBoost(bool enable) override {
105*ec779b8eSAndroid Build Coastguard Worker mLastEvent = {enable ? EventType::CPUSET_ENABLE : EventType::CPUSET_DISABLE, 0};
106*ec779b8eSAndroid Build Coastguard Worker mEventCount++;
107*ec779b8eSAndroid Build Coastguard Worker return true;
108*ec779b8eSAndroid Build Coastguard Worker }
109*ec779b8eSAndroid Build Coastguard Worker
eventCountTestSystemCallback110*ec779b8eSAndroid Build Coastguard Worker size_t eventCount() { return mEventCount; }
lastEventTypeTestSystemCallback111*ec779b8eSAndroid Build Coastguard Worker EventType lastEventType() { return mLastEvent.type; }
lastEventTestSystemCallback112*ec779b8eSAndroid Build Coastguard Worker EventEntry lastEvent() { return mLastEvent; }
113*ec779b8eSAndroid Build Coastguard Worker
114*ec779b8eSAndroid Build Coastguard Worker protected:
~TestSystemCallbackTestSystemCallback115*ec779b8eSAndroid Build Coastguard Worker virtual ~TestSystemCallback() {}
116*ec779b8eSAndroid Build Coastguard Worker
117*ec779b8eSAndroid Build Coastguard Worker private:
118*ec779b8eSAndroid Build Coastguard Worker EventEntry mLastEvent;
119*ec779b8eSAndroid Build Coastguard Worker size_t mEventCount;
120*ec779b8eSAndroid Build Coastguard Worker
121*ec779b8eSAndroid Build Coastguard Worker DISALLOW_EVIL_CONSTRUCTORS(TestSystemCallback);
122*ec779b8eSAndroid Build Coastguard Worker };
123*ec779b8eSAndroid Build Coastguard Worker
124*ec779b8eSAndroid Build Coastguard Worker
125*ec779b8eSAndroid Build Coastguard Worker struct TestClient : public BnResourceManagerClient {
TestClientTestClient126*ec779b8eSAndroid Build Coastguard Worker TestClient(int pid, int uid, int32_t clientImportance,
127*ec779b8eSAndroid Build Coastguard Worker const std::shared_ptr<ResourceManagerService> &service)
128*ec779b8eSAndroid Build Coastguard Worker : mPid(pid), mUid(uid), mClientImportance(clientImportance), mService(service) {}
129*ec779b8eSAndroid Build Coastguard Worker
reclaimResourceTestClient130*ec779b8eSAndroid Build Coastguard Worker Status reclaimResource(bool* _aidl_return) override {
131*ec779b8eSAndroid Build Coastguard Worker ClientInfoParcel clientInfo{.pid = static_cast<int32_t>(mPid),
132*ec779b8eSAndroid Build Coastguard Worker .uid = static_cast<int32_t>(mUid),
133*ec779b8eSAndroid Build Coastguard Worker .id = getId(ref<TestClient>()),
134*ec779b8eSAndroid Build Coastguard Worker .name = "none",
135*ec779b8eSAndroid Build Coastguard Worker .importance = mClientImportance};
136*ec779b8eSAndroid Build Coastguard Worker mService->removeClient(clientInfo);
137*ec779b8eSAndroid Build Coastguard Worker mWasReclaimResourceCalled = true;
138*ec779b8eSAndroid Build Coastguard Worker *_aidl_return = true;
139*ec779b8eSAndroid Build Coastguard Worker return Status::ok();
140*ec779b8eSAndroid Build Coastguard Worker }
141*ec779b8eSAndroid Build Coastguard Worker
getNameTestClient142*ec779b8eSAndroid Build Coastguard Worker Status getName(::std::string* _aidl_return) override {
143*ec779b8eSAndroid Build Coastguard Worker *_aidl_return = "test_client";
144*ec779b8eSAndroid Build Coastguard Worker return Status::ok();
145*ec779b8eSAndroid Build Coastguard Worker }
146*ec779b8eSAndroid Build Coastguard Worker
checkIfReclaimedAndResetTestClient147*ec779b8eSAndroid Build Coastguard Worker bool checkIfReclaimedAndReset() {
148*ec779b8eSAndroid Build Coastguard Worker bool wasReclaimResourceCalled = mWasReclaimResourceCalled;
149*ec779b8eSAndroid Build Coastguard Worker mWasReclaimResourceCalled = false;
150*ec779b8eSAndroid Build Coastguard Worker return wasReclaimResourceCalled;
151*ec779b8eSAndroid Build Coastguard Worker }
152*ec779b8eSAndroid Build Coastguard Worker
~TestClientTestClient153*ec779b8eSAndroid Build Coastguard Worker virtual ~TestClient() {}
154*ec779b8eSAndroid Build Coastguard Worker
pidTestClient155*ec779b8eSAndroid Build Coastguard Worker inline int pid() const { return mPid; }
uidTestClient156*ec779b8eSAndroid Build Coastguard Worker inline int uid() const { return mUid; }
clientImportanceTestClient157*ec779b8eSAndroid Build Coastguard Worker inline int32_t clientImportance() const { return mClientImportance; }
158*ec779b8eSAndroid Build Coastguard Worker
159*ec779b8eSAndroid Build Coastguard Worker private:
160*ec779b8eSAndroid Build Coastguard Worker bool mWasReclaimResourceCalled = false;
161*ec779b8eSAndroid Build Coastguard Worker int mPid;
162*ec779b8eSAndroid Build Coastguard Worker int mUid;
163*ec779b8eSAndroid Build Coastguard Worker int32_t mClientImportance = 0;
164*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<ResourceManagerService> mService;
165*ec779b8eSAndroid Build Coastguard Worker DISALLOW_EVIL_CONSTRUCTORS(TestClient);
166*ec779b8eSAndroid Build Coastguard Worker };
167*ec779b8eSAndroid Build Coastguard Worker
168*ec779b8eSAndroid Build Coastguard Worker // [pid, uid] used by the test.
169*ec779b8eSAndroid Build Coastguard Worker static const int kTestPid1 = 30;
170*ec779b8eSAndroid Build Coastguard Worker static const int kTestUid1 = 1010;
171*ec779b8eSAndroid Build Coastguard Worker
172*ec779b8eSAndroid Build Coastguard Worker static const int kTestPid2 = 20;
173*ec779b8eSAndroid Build Coastguard Worker static const int kTestUid2 = 1011;
174*ec779b8eSAndroid Build Coastguard Worker
175*ec779b8eSAndroid Build Coastguard Worker static const int kLowPriorityPid = 40;
176*ec779b8eSAndroid Build Coastguard Worker static const int kMidPriorityPid = 25;
177*ec779b8eSAndroid Build Coastguard Worker static const int kHighPriorityPid = 10;
178*ec779b8eSAndroid Build Coastguard Worker
179*ec779b8eSAndroid Build Coastguard Worker // Client Ids used by the test.
180*ec779b8eSAndroid Build Coastguard Worker static const int kLowPriorityClientId = 1111;
181*ec779b8eSAndroid Build Coastguard Worker static const int kMidPriorityClientId = 2222;
182*ec779b8eSAndroid Build Coastguard Worker static const int kHighPriorityClientId = 3333;
183*ec779b8eSAndroid Build Coastguard Worker
184*ec779b8eSAndroid Build Coastguard Worker // Client importance used by the test.
185*ec779b8eSAndroid Build Coastguard Worker static const int32_t kHighestCodecImportance = 0;
186*ec779b8eSAndroid Build Coastguard Worker static const int32_t kLowestCodecImportance = 100;
187*ec779b8eSAndroid Build Coastguard Worker static const int32_t kMidCodecImportance = 50;
188*ec779b8eSAndroid Build Coastguard Worker
189*ec779b8eSAndroid Build Coastguard Worker using EventType = TestSystemCallback::EventType;
190*ec779b8eSAndroid Build Coastguard Worker using EventEntry = TestSystemCallback::EventEntry;
191*ec779b8eSAndroid Build Coastguard Worker bool operator== (const EventEntry& lhs, const EventEntry& rhs) {
192*ec779b8eSAndroid Build Coastguard Worker return lhs.type == rhs.type && lhs.arg == rhs.arg;
193*ec779b8eSAndroid Build Coastguard Worker }
194*ec779b8eSAndroid Build Coastguard Worker
195*ec779b8eSAndroid Build Coastguard Worker // The condition is expected to return a status but also update the local
196*ec779b8eSAndroid Build Coastguard Worker // result variable.
197*ec779b8eSAndroid Build Coastguard Worker #define CHECK_STATUS_TRUE(conditionThatUpdatesResult) \
198*ec779b8eSAndroid Build Coastguard Worker do { \
199*ec779b8eSAndroid Build Coastguard Worker bool result = false; \
200*ec779b8eSAndroid Build Coastguard Worker EXPECT_TRUE((conditionThatUpdatesResult).isOk()); \
201*ec779b8eSAndroid Build Coastguard Worker EXPECT_TRUE(result); \
202*ec779b8eSAndroid Build Coastguard Worker } while(false)
203*ec779b8eSAndroid Build Coastguard Worker
204*ec779b8eSAndroid Build Coastguard Worker // The condition is expected to return a status but also update the local
205*ec779b8eSAndroid Build Coastguard Worker // result variable.
206*ec779b8eSAndroid Build Coastguard Worker #define CHECK_STATUS_FALSE(conditionThatUpdatesResult) \
207*ec779b8eSAndroid Build Coastguard Worker do { \
208*ec779b8eSAndroid Build Coastguard Worker bool result = true; \
209*ec779b8eSAndroid Build Coastguard Worker EXPECT_TRUE((conditionThatUpdatesResult).isOk()); \
210*ec779b8eSAndroid Build Coastguard Worker EXPECT_FALSE(result); \
211*ec779b8eSAndroid Build Coastguard Worker } while(false)
212*ec779b8eSAndroid Build Coastguard Worker
213*ec779b8eSAndroid Build Coastguard Worker class ResourceManagerServiceTestBase : public ::testing::Test {
214*ec779b8eSAndroid Build Coastguard Worker public:
toTestClient(std::shared_ptr<IResourceManagerClient> testClient)215*ec779b8eSAndroid Build Coastguard Worker static TestClient* toTestClient(std::shared_ptr<IResourceManagerClient> testClient) {
216*ec779b8eSAndroid Build Coastguard Worker return static_cast<TestClient*>(testClient.get());
217*ec779b8eSAndroid Build Coastguard Worker }
218*ec779b8eSAndroid Build Coastguard Worker
mNewRM(newRM)219*ec779b8eSAndroid Build Coastguard Worker ResourceManagerServiceTestBase(bool newRM = false) : mNewRM(newRM) {
220*ec779b8eSAndroid Build Coastguard Worker ALOGI("ResourceManagerServiceTestBase created with %s RM", newRM ? "new" : "old");
221*ec779b8eSAndroid Build Coastguard Worker }
222*ec779b8eSAndroid Build Coastguard Worker
SetUp()223*ec779b8eSAndroid Build Coastguard Worker void SetUp() override {
224*ec779b8eSAndroid Build Coastguard Worker // Need thread pool to receive callbacks, otherwise oneway callbacks are
225*ec779b8eSAndroid Build Coastguard Worker // silently ignored.
226*ec779b8eSAndroid Build Coastguard Worker ABinderProcess_startThreadPool();
227*ec779b8eSAndroid Build Coastguard Worker mSystemCB = new TestSystemCallback();
228*ec779b8eSAndroid Build Coastguard Worker if (mNewRM) {
229*ec779b8eSAndroid Build Coastguard Worker mService = ResourceManagerService::CreateNew(new TestProcessInfo, mSystemCB);
230*ec779b8eSAndroid Build Coastguard Worker } else {
231*ec779b8eSAndroid Build Coastguard Worker mService = ResourceManagerService::Create(new TestProcessInfo, mSystemCB);
232*ec779b8eSAndroid Build Coastguard Worker }
233*ec779b8eSAndroid Build Coastguard Worker mTestClient1 = ::ndk::SharedRefBase::make<TestClient>(kTestPid1, kTestUid1, 0, mService);
234*ec779b8eSAndroid Build Coastguard Worker mTestClient2 = ::ndk::SharedRefBase::make<TestClient>(kTestPid2, kTestUid2, 0, mService);
235*ec779b8eSAndroid Build Coastguard Worker mTestClient3 = ::ndk::SharedRefBase::make<TestClient>(kTestPid2, kTestUid2, 0, mService);
236*ec779b8eSAndroid Build Coastguard Worker }
237*ec779b8eSAndroid Build Coastguard Worker
238*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<IResourceManagerClient> createTestClient(int pid, int uid,
239*ec779b8eSAndroid Build Coastguard Worker int32_t importance = 0) {
240*ec779b8eSAndroid Build Coastguard Worker return ::ndk::SharedRefBase::make<TestClient>(pid, uid, importance, mService);
241*ec779b8eSAndroid Build Coastguard Worker }
242*ec779b8eSAndroid Build Coastguard Worker
243*ec779b8eSAndroid Build Coastguard Worker sp<TestSystemCallback> mSystemCB;
244*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<ResourceManagerService> mService;
245*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<IResourceManagerClient> mTestClient1;
246*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<IResourceManagerClient> mTestClient2;
247*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<IResourceManagerClient> mTestClient3;
248*ec779b8eSAndroid Build Coastguard Worker
249*ec779b8eSAndroid Build Coastguard Worker protected:
isEqualResources(const std::vector<MediaResourceParcel> & resources1,const ResourceList & resources2)250*ec779b8eSAndroid Build Coastguard Worker static bool isEqualResources(const std::vector<MediaResourceParcel> &resources1,
251*ec779b8eSAndroid Build Coastguard Worker const ResourceList &resources2) {
252*ec779b8eSAndroid Build Coastguard Worker // convert resource1 to ResourceList
253*ec779b8eSAndroid Build Coastguard Worker ResourceList r1;
254*ec779b8eSAndroid Build Coastguard Worker for (size_t i = 0; i < resources1.size(); ++i) {
255*ec779b8eSAndroid Build Coastguard Worker r1.addOrUpdate(resources1[i]);
256*ec779b8eSAndroid Build Coastguard Worker }
257*ec779b8eSAndroid Build Coastguard Worker return r1 == resources2;
258*ec779b8eSAndroid Build Coastguard Worker }
259*ec779b8eSAndroid Build Coastguard Worker
expectEqResourceInfo(const ResourceInfo & info,int uid,std::shared_ptr<IResourceManagerClient> client,const std::vector<MediaResourceParcel> & resources)260*ec779b8eSAndroid Build Coastguard Worker static void expectEqResourceInfo(const ResourceInfo &info,
261*ec779b8eSAndroid Build Coastguard Worker int uid,
262*ec779b8eSAndroid Build Coastguard Worker std::shared_ptr<IResourceManagerClient> client,
263*ec779b8eSAndroid Build Coastguard Worker const std::vector<MediaResourceParcel> &resources) {
264*ec779b8eSAndroid Build Coastguard Worker EXPECT_EQ(uid, info.uid);
265*ec779b8eSAndroid Build Coastguard Worker EXPECT_EQ(client, info.client);
266*ec779b8eSAndroid Build Coastguard Worker EXPECT_TRUE(isEqualResources(resources, info.resources));
267*ec779b8eSAndroid Build Coastguard Worker }
268*ec779b8eSAndroid Build Coastguard Worker
269*ec779b8eSAndroid Build Coastguard Worker bool mNewRM = false;
270*ec779b8eSAndroid Build Coastguard Worker };
271*ec779b8eSAndroid Build Coastguard Worker
272*ec779b8eSAndroid Build Coastguard Worker } // namespace android
273