1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/*
2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project
3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License.
6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at
7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software
11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and
14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License.
15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.dialog;
18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.app.DialogFragment;
20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.os.Bundle;
21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.annotation.Nullable;
22816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.text.TextUtils;
23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.util.Log;
24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.LayoutInflater;
25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.View;
26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.ViewGroup;
27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.ViewGroup.LayoutParams;
28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.webkit.WebView;
29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.webkit.WebViewClient;
30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/**
32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * A DialogFragment that shows a web view.
33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
34816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class WebDialogFragment extends SafeDismissDialogFragment {
35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final String TAG = "WebDialogFragment";
36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final String URL = "URL";
37816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final String TITLE = "TITLE";
38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final String TRACKER_LABEL = "TRACKER_LABEL";
39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private String mTrackerLabel;
41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    /**
43816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko     * Create a new WebDialogFragment to show a particular web page.
44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko     *
45816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko     * @param url   The URL of the content to show.
46816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko     * @param title Optional title for the dialog.
47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko     */
48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public static WebDialogFragment newInstance(String url, @Nullable String title,
49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            String trackerLabel) {
50816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        WebDialogFragment f = new WebDialogFragment();
51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        Bundle args = new Bundle();
52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        args.putString(URL, url);
53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        args.putString(TITLE, title);
54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        args.putString(TRACKER_LABEL, trackerLabel);
55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        f.setArguments(args);
56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return f;
57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void onCreate(Bundle savedInstanceState) {
61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        super.onCreate(savedInstanceState);
62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        String title = getArguments().getString(TITLE);
63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mTrackerLabel = getArguments().getString(TRACKER_LABEL);
64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        int style = TextUtils.isEmpty(title) ? DialogFragment.STYLE_NO_TITLE
65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                : DialogFragment.STYLE_NORMAL;
66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        setStyle(style, 0);
67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Nullable
70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public View onCreateView(LayoutInflater inflater, ViewGroup container,
72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            Bundle savedInstanceState) {
73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        String title = getArguments().getString(TITLE);
74816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        getDialog().setTitle(title);
75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        WebView webView = new WebView(getActivity());
77816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        webView.setWebViewClient(new WebViewClient());
78816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        String url = getArguments().getString(URL);
79816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        webView.loadUrl(url);
80816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        Log.d(TAG, "Loading web content from " + url);
81816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
82816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return webView;
83816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
84816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
85816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
86816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void onStart() {
87816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        super.onStart();
88816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        // Ensure the dialog is fullscreen, even if the webview doesn't have its content yet.
89816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        getDialog().getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
90816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
91816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
93816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public String getTrackerLabel() {
94816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return mTrackerLabel;
95816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
96816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko}
97