1dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki/*
2dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * Copyright (C) 2012 The Android Open Source Project
3dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki *
4dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License");
5dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * you may not use this file except in compliance with the License.
6dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * You may obtain a copy of the License at
7dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki *
8dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki *      http://www.apache.org/licenses/LICENSE-2.0
9dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki *
10dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * Unless required by applicable law or agreed to in writing, software
11dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS,
12dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * See the License for the specific language governing permissions and
14dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki * limitations under the License
15dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki */
16dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
17dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onukipackage com.android.providers.contacts.util;
18dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
19dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onukipublic class MockClock extends Clock {
20dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    /** Current time.  Only updated with advance(). */
2163630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki    private long mCurrentTimeMillis;
22dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
23dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    public void install() {
24dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki        Clock.injectInstance(this);
25dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
2663630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki        mCurrentTimeMillis = 100000;
27dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    }
28dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
29dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    public void uninstall() {
30dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki        Clock.resetInstance();
31dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    }
32dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
33dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    @Override
34dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    public long currentTimeMillis() {
3563630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki        return mCurrentTimeMillis;
3663630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki    }
3763630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki
3863630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki    public void setCurrentTimeMillis(long time) {
3963630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki        mCurrentTimeMillis = time;
40dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    }
41dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki
42dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    public void advance() {
4363630bc7f962fd2b6f2c1bc41cbed45a8bc354baMakoto Onuki        mCurrentTimeMillis++;
44dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki    }
45dfab50ecd585e55769dea451cb3a47ff69b8b86dMakoto Onuki}
46