void HTML5VideoFullScreen::EnterFullScreenVideoState( /* [in] */ Int32 layerId, /* [in] */ HTML5VideoViewProxy* proxy, /* [in] */ CWebViewClassic* webView) { mFullScreenMode = FULLSCREEN_SURFACECREATING; mCurrentBufferPercentage = 0; mPlayer->SetOnBufferingUpdateListener(mBufferingUpdateListener); mProxy = proxy; AutoPtr<ISurfaceHolder> surfaceHolder; mVideoSurfaceView->GetHolder((ISurfaceHolder**)&surfaceHolder); surfaceHolder->AddCallback(mSHCallback); surfaceHolder->SetType(ISurfaceHolder::SURFACE_TYPE_PUSH_BUFFERS); mVideoSurfaceView->SetFocusable(TRUE); mVideoSurfaceView->SetFocusableInTouchMode(TRUE); mVideoSurfaceView->RequestFocus(NULL); mVideoSurfaceView->SetOnKeyListener(mProxy); // Create a FrameLayout that will contain the VideoView and the // progress view (if any). mLayout = NULL; CFrameLayout::New(mProxy->GetContext(), (IFrameLayout**)&mLayout); AutoPtr<IFrameLayoutLayoutParams> layoutParams; CFrameLayoutLayoutParams::New( IViewGroupLayoutParams::WRAP_CONTENT, IViewGroupLayoutParams::WRAP_CONTENT, IGravity::CENTER, (IFrameLayoutLayoutParams**)&layoutParams); mLayout->AddView(GetSurfaceView(), layoutParams); mLayout->SetVisibility(IView::VISIBLE); AutoPtr<IWebChromeClient> client; webView->GetWebChromeClient((IWebChromeClient**)&client); if (client != NULL) { client->OnShowCustomView(mLayout, mCallback); // Plugins like Flash will draw over the video so hide // them while we're playing. if (webView->GetViewManager() != NULL) { webView->GetViewManager()->HideAll(); } mProgressView = NULL; client->GetVideoLoadingProgressView((IView**)&mProgressView); if (mProgressView != NULL) { mLayout->AddView(mProgressView, layoutParams); mProgressView->SetVisibility(IView::VISIBLE); } } }