1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.content.browser.test.util;
6
7/**
8 * Criteria used to know when an orientation change happens.
9 */
10public class OrientationChangeObserverCriteria implements Criteria {
11
12    private final MockOrientationObserver mObserver;
13    private final int mTarget;
14    private final boolean mCheckTarget;
15
16    // Constructor to be used when the criteria is that there is an
17    // orientation change but the new orientation value does not matter.
18    public OrientationChangeObserverCriteria(MockOrientationObserver observer) {
19        mObserver = observer;
20        mObserver.mHasChanged = false;
21
22        mCheckTarget = false;
23        mTarget = -1;
24    }
25
26    // Constructor to be used when the criteria cares about a change
27    // happening to a specific orientation value.
28    public OrientationChangeObserverCriteria(MockOrientationObserver observer, int target) {
29        mObserver = observer;
30        mObserver.mHasChanged = false;
31
32        mTarget = target;
33        mCheckTarget = true;
34    }
35
36    @Override
37    public boolean isSatisfied() {
38        if (!mObserver.mHasChanged)
39            return false;
40
41        return !mCheckTarget || mObserver.mOrientation == mTarget;
42    }
43}
44