[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


扫描二维码关注公众号,回复: 4887436 查看本文章

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资源


终于跑通了,滑动速度杠杠的:)


猜你喜欢

转载自blog.csdn.net/dopi/article/details/27981513