接上文接下来是从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资源
终于跑通了,滑动速度杠杠的:)