Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf0f2697 authored by Robert Shih's avatar Robert Shih
Browse files

MediaPlayer2: don't pass cookies to Media2HTTPService

Bug: 109928575
Test: MediaPlayer2Test#testPlayVideoWithCookies
Change-Id: Iba853e5bfd7e6a28615feb15f4d975fedecdc6a9
parent d3fd0bd7
Loading
Loading
Loading
Loading
+2 −42
Original line number Diff line number Diff line
@@ -18,9 +18,6 @@ package android.media;

import android.util.Log;

import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookieStore;
import java.net.HttpCookie;
import java.util.List;

@@ -38,46 +35,9 @@ public class Media2HTTPService {
    public Media2HTTPConnection makeHTTPConnection() {

        synchronized (mCookieStoreInitialized) {
            // Only need to do it once for all connections
            if ( !mCookieStoreInitialized )  {
                CookieHandler cookieHandler = CookieHandler.getDefault();
                if (cookieHandler == null) {
                    cookieHandler = new CookieManager();
                    CookieHandler.setDefault(cookieHandler);
                    Log.v(TAG, "makeHTTPConnection: CookieManager created: " + cookieHandler);
                } else {
                    Log.v(TAG, "makeHTTPConnection: CookieHandler (" + cookieHandler + ") exists.");
            Media2Utils.storeCookies(mCookies);
        }

                // Applying the bootstrapping cookies
                if ( mCookies != null ) {
                    if ( cookieHandler instanceof CookieManager ) {
                        CookieManager cookieManager = (CookieManager)cookieHandler;
                        CookieStore store = cookieManager.getCookieStore();
                        for ( HttpCookie cookie : mCookies ) {
                            try {
                                store.add(null, cookie);
                            } catch ( Exception e ) {
                                Log.v(TAG, "makeHTTPConnection: CookieStore.add" + e);
                            }
                            //for extended debugging when needed
                            //Log.v(TAG, "MediaHTTPConnection adding Cookie[" + cookie.getName() +
                            //        "]: " + cookie);
                        }
                    } else {
                        Log.w(TAG, "makeHTTPConnection: The installed CookieHandler is not a "
                                + "CookieManager. Can’t add the provided cookies to the cookie "
                                + "store.");
                    }
                }   // mCookies

                mCookieStoreInitialized = true;

                Log.v(TAG, "makeHTTPConnection(" + this + "): cookieHandler: " + cookieHandler +
                        " Cookies: " + mCookies);
            }   // mCookieStoreInitialized
        }   // synchronized

        return new Media2HTTPConnection();
    }

+65 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media;

import android.util.Log;

import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookieStore;
import java.net.HttpCookie;
import java.util.List;

/** @hide */
public class Media2Utils {
    private static final String TAG = "Media2Utils";

    private Media2Utils() {
    }

    public static synchronized void storeCookies(List<HttpCookie> cookies) {
        CookieHandler cookieHandler = CookieHandler.getDefault();
        if (cookieHandler == null) {
            cookieHandler = new CookieManager();
            CookieHandler.setDefault(cookieHandler);
            Log.v(TAG, "storeCookies: CookieManager created: " + cookieHandler);
        } else {
            Log.v(TAG, "storeCookies: CookieHandler (" + cookieHandler + ") exists.");
        }

        if (cookies != null) {
            if (cookieHandler instanceof CookieManager) {
                CookieManager cookieManager = (CookieManager)cookieHandler;
                CookieStore store = cookieManager.getCookieStore();
                for (HttpCookie cookie : cookies) {
                    try {
                        store.add(null, cookie);
                    } catch (Exception e) {
                        Log.v(TAG, "storeCookies: CookieStore.add" + cookie, e);
                    }
                }
            } else {
                Log.w(TAG, "storeCookies: The installed CookieHandler is not a CookieManager."
                        + " Can’t add the provided cookies to the cookie store.");
            }
        }   // cookies

        Log.v(TAG, "storeCookies: cookieHandler: " + cookieHandler + " Cookies: " + cookies);

    }

}
+2 −1
Original line number Diff line number Diff line
@@ -818,10 +818,11 @@ public final class MediaPlayer2Impl extends MediaPlayer2 {
            path = uri.getPath();
        } else if (scheme != null) {
            // handle non-file sources
            Media2Utils.storeCookies(cookies);
            nativeHandleDataSourceUrl(
                isCurrent,
                srcId,
                Media2HTTPService.createHTTPService(path, cookies),
                Media2HTTPService.createHTTPService(path),
                path,
                keys,
                values);