[chromium][browser][idea][closed] Part2 : 把渲染模式改成SurfaceView方式 + java端的改動
接上文接下來是從aw_content -> chromium_webview -> webkit -> browser的方向進行更改
1、修改android_webview\native\aw_contents.cc,把InProcessViewRenderer部分去除
1)遮蔽browser_view_renderer_
2)ondraw直接return true
2、修改webkit部分
1)需要用的FurfaceView的話,重要的通道需要擁有ContentView的屬性
3、所以也要修改content中需要修改ContenView的構造方法
1)把mContentViewCore開放給外面,等外面建立後設置進來就行,所以這裡構造時不用生成mContentViewCore
4、修改AwContents.java
1)把mContainerView改成ConentView型別
2)setNewAwContents中把mContentViewCore設定給ConentView
3)getContentHeightCss和getContentWidthCss中有點錯誤,先執行一下ContentView的get方法
同時在ContentView中也要加上getContentWidth方法
5、Browser中的修改
1)把so的拉起動作改到BrowserActivity中
2)BaseUI的Attach和Dettach中需要對SuffaceView進行重新對接
mContentViewRenderView參考Chromium_testshell的實現
執行異常
1、WebViewChromiumFactoryProvider進入執行異常
getBrowserContextLocked 中改成PreferenceManager.getDefaultSharedPreferences(ActivityThread.currentApplication());
2、因為surfaceView對接,頁面容易出現黑屏
1)Controller的onPageStarted中最好,retach一下
2) goBackOnePageOrQuit中把switchToTab和closeTab的順序換一下
3)createScreenshot中直接取contentView.getBitmap
3、Tab.java中也把capture改成contentView.getBitmap
4、因為Webview的變動,發現原來很多用的地方有錯誤,先遮蔽,所以會帶來一些功能確實
如GoogleAccountLogin、Preloader、AccessibilityPreferencesFragment、WebViewPreview、FontSizePreview、
5、上面的getContentHeightCss寫錯了,改為呼叫的mContentViewCore的就行
6、同時忘記改AndroidManifest.xml,加上SandboxedProcessService0等
7、CookieManagerAdapter中也有一個錯誤,先把setAcceptCookie註釋掉
8、assets中需要新增 zh_CN.pak資源
終於跑通了,滑動速度槓槓的:)