1d15459197f71f8cc940e2b057b399117df282f2cDiego Perez/*
2d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * Copyright (C) 2016 The Android Open Source Project
3d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *
4d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * Licensed under the Apache License, Version 2.0 (the "License");
5d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * you may not use this file except in compliance with the License.
6d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * You may obtain a copy of the License at
7d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *
8d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *      http://www.apache.org/licenses/LICENSE-2.0
9d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *
10d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * Unless required by applicable law or agreed to in writing, software
11d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * distributed under the License is distributed on an "AS IS" BASIS,
12d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * See the License for the specific language governing permissions and
14d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * limitations under the License.
15d15459197f71f8cc940e2b057b399117df282f2cDiego Perez */
16d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
17d15459197f71f8cc940e2b057b399117df282f2cDiego Perezpackage com.android.layoutlib.bridge.intensive;
18d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
19d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport com.android.ide.common.rendering.api.RenderSession;
20d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport com.android.ide.common.rendering.api.Result;
21d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport com.android.ide.common.rendering.api.ViewInfo;
22d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
23d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport android.annotation.NonNull;
24d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport android.annotation.Nullable;
25d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
26d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport java.util.ArrayList;
27d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport java.util.Collections;
28d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport java.util.List;
29d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
30d15459197f71f8cc940e2b057b399117df282f2cDiego Perezclass RenderResult {
31d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private final List<ViewInfo> mRootViews;
32d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private final List<ViewInfo> mSystemViews;
33d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private final Result mRenderResult;
34d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
35d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private RenderResult(@Nullable Result result, @Nullable List<ViewInfo> systemViewInfoList,
36d15459197f71f8cc940e2b057b399117df282f2cDiego Perez            @Nullable List<ViewInfo> rootViewInfoList) {
37d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        mSystemViews = systemViewInfoList == null ? Collections.emptyList() : systemViewInfoList;
38d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        mRootViews = rootViewInfoList == null ? Collections.emptyList() : rootViewInfoList;
39d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        mRenderResult = result;
40d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
41d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
42d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @NonNull
43d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    static RenderResult getFromSession(@NonNull RenderSession session) {
44d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return new RenderResult(session.getResult(),
45d15459197f71f8cc940e2b057b399117df282f2cDiego Perez                new ArrayList<>(session.getSystemRootViews()),
46d15459197f71f8cc940e2b057b399117df282f2cDiego Perez                new ArrayList<>(session.getRootViews()));
47d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
48d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
49d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @Nullable
50d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    Result getResult() {
51d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return mRenderResult;
52d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
53d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
54d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @NonNull
55d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    public List<ViewInfo> getRootViews() {
56d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return mRootViews;
57d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
58d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
59d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @NonNull
60d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    public List<ViewInfo> getSystemViews() {
61d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return mSystemViews;
62d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
63d15459197f71f8cc940e2b057b399117df282f2cDiego Perez}
64