blob: 962c754435e1fc5546968a1ae49875d08035553b [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.weblayer_private;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import org.chromium.weblayer_private.aidl.IBrowserFragmentController;
import org.chromium.weblayer_private.aidl.IObjectWrapper;
import org.chromium.weblayer_private.aidl.IProfile;
/**
* Implementation of {@link IBrowserFragmentController}.
*/
public class BrowserFragmentControllerImpl extends IBrowserFragmentController.Stub {
private final ProfileImpl mProfile;
private BrowserControllerImpl mTabController;
private FragmentWindowAndroid mWindowAndroid;
public BrowserFragmentControllerImpl(ProfileImpl profile, Bundle savedInstanceState) {
mProfile = profile;
// Restore tabs etc from savedInstanceState here.
}
public void onFragmentAttached(Context context, FragmentWindowAndroid windowAndroid) {
mTabController = new BrowserControllerImpl(context, mProfile, windowAndroid);
mWindowAndroid = windowAndroid;
}
public void onFragmentDetached() {
mTabController.destroy();
mTabController = null;
mWindowAndroid = null;
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mWindowAndroid != null) {
mWindowAndroid.onActivityResult(requestCode, resultCode, data);
}
}
@Override
public void setTopView(IObjectWrapper view) {
getBrowserController().setTopView(view);
}
@Override
public void setSupportsEmbedding(boolean enable, IObjectWrapper valueCallback) {
getBrowserController().setSupportsEmbedding(enable, valueCallback);
}
@Override
public BrowserControllerImpl getBrowserController() {
if (mTabController == null) {
throw new RuntimeException("Currently BrowserController requires Activity context, so "
+ "it exists only while BrowserFragment is attached to an Activity");
}
return mTabController;
}
@Override
public IProfile getProfile() {
return mProfile;
}
public View getFragmentView() {
return mTabController.getView();
}
public void destroy() {}
}