1. 程式人生 > >chromium相關問題集合--持續更新中

chromium相關問題集合--持續更新中

  • Q: 如何替換chromium瀏覽器中的圖示?

A: 替換src\chrome\app\theme\chromium下面相關的圖片;

  • Q: chrome應用可以分為哪些型別?

 A:

    case Manifest::TYPE_EXTENSION:

    case Manifest::TYPE_THEME:
    case Manifest::TYPE_USER_SCRIPT:
    case Manifest::TYPE_HOSTED_APP:
    case Manifest::TYPE_LEGACY_PACKAGED_APP:
    case Manifest::TYPE_PLATFORM_APP:

    case Manifest::TYPE_SHARED_MODULE:

  • Q:extension是可以通過哪些發方式來載入?

A:

  // What an extension was loaded from.
  // NOTE: These values are stored as integers in the preferences and used
  // in histograms so don't remove or reorder existing items.  Just append
  // to the end.
  enum Location {
    INVALID_LOCATION,
    INTERNAL,           // A crx file from the internal Extensions directory.
    EXTERNAL_PREF,      // A crx file from an external directory (via prefs).
    EXTERNAL_REGISTRY,  // A crx file from an external directory (via eg the
                        // registry on Windows).
    UNPACKED,           // From loading an unpacked extension from the
                        // extensions settings page.
    COMPONENT,          // An integral component of Chrome itself, which
                        // happens to be implemented as an extension. We don't
                        // show these in the management UI.
    EXTERNAL_PREF_DOWNLOAD,    // A crx file from an external directory (via
                               // prefs), installed from an update URL.
    EXTERNAL_POLICY_DOWNLOAD,  // A crx file from an external directory (via
                               // admin policies), installed from an update URL.
    COMMAND_LINE,       // --load-extension.
    EXTERNAL_POLICY,    // A crx file from an external directory (via admin
                        // policies), cached locally and installed from the
                        // cache.
    EXTERNAL_COMPONENT, // Similar to COMPONENT in that it's considered an
                        // internal implementation detail of chrome, but
                        // installed from an update URL like the *DOWNLOAD ones.


    NUM_LOCATIONS
  };


An extension that's installed automatically is known as an external extension. Google Chrome supports two ways of installing external extensions:

Using a preferences JSON file (Mac OS X and Linux only)
Using the Windows registry (Windows only)src/chrome/common/extensions/docs/templates/articles/external_extensions.html


  • Q:以什麼理由來通知系統我們需要通過本地安裝呢?
A:
  enum OffStoreInstallAllowReason {
    OffStoreInstallDisallowed,
    OffStoreInstallAllowedFromSettingsPage,
    OffStoreInstallAllowedBecausePref,
    OffStoreInstallAllowedInTest,
    NumOffStoreInstallAllowReasons

  };

  • 擴充套件預設安裝示例
A: src\chrome\browser\extensions\api\management\management_apitest.cc:102行
IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, Basics) {
  LoadExtensions();

  base::FilePath basedir = test_data_dir_.AppendASCII("management");
  InstallNamedExtension(basedir, "internal_extension", Manifest::INTERNAL);
  InstallNamedExtension(basedir, "external_extension",
                        Manifest::EXTERNAL_PREF);
  InstallNamedExtension(basedir, "admin_extension",
                        Manifest::EXTERNAL_POLICY_DOWNLOAD);

  ASSERT_TRUE(RunExtensionSubtest("management/test", "basics.html"));
}

  • Q: 如何編譯chromium?

A: 最新的chromium(2014-03-18)已經不再支援單獨的vs編譯方式,需要用nanja或者nanja+vs的方式來編譯,具體參考這裡

  • Q: chromium程式碼由於網路的原因很難下載原始碼,怎麼辦?

A: 可以從網上下載別人編譯好的放到自己的本地,可以從這裡下載http://pan.baidu.com/s/1kTofGc3,請仔細看說明後在動手。但程式碼目錄一定要和原編譯人的一樣,也可以按如下操作解決,說白了就是vs、sdk等有些變數的路徑查詢不到。具體詳細討論看這裡

http://code.google.com/p/chromium/issues/detail?id=353425
Delete depot_tools\win_toolchain and reinstal it (by running gclient runhooks) error  
wont happen in new partition.
  • Q:chromium release版本在那裡看?

A:http://src.chromium.org/viewvc/chrome/releases和http://src.chromium.org/svn/releases/

  • Q: 如何開始學習chromium?
A: 請到這裡http://chromium.hiju.com/ 和http://www.chromium.org/Home上開始學習。
  • Q:如何開始除錯chromium?啟動時預設的動作執行在是如何開始的?
A: src\chrome\browser\chrome_browser_main.cc:ChromeBrowserMainParts::PreMainMessageLoopRunImpl() :1094
  • window 平臺cmd下能用什麼命令看一個程序的父程序的PID?
A:process explorer
  • 在哪裡可以瞭解到chromium設計的策略?
A:http://www.chromium.org/administrators/policy-list-3
  • 如何修改安裝後第一次執行時顯示的歡迎頁面?
A:src\chrome\browser\resources\locale_settings.grd中搜索IDS_WELCOME_PAGE_URL,修改為自己的。
  • 如何給chromium新增預設的extension
A 具體參考這裡 1. http://developer.chrome.com/extensions/external_extensions 2.  http://dev.chromium.org/administrators/pre-installed-extensions 3.  http://dev.chromium.org/administrators/configuring-other-preferences 4. http://open.chrome.360.cn/extension_dev/external_extensions.html 下載擴充套件的方法:http://blog.csdn.net/talking12391239/article/details/22877451 程式碼除錯位置:

  • Q: 如何移除"缺少 Google API 金鑰,因此 Chromium 的部分功能將無法使用"的提示?
A: src\chrome\browser\ui\startup\startup_browser_creator_impl.cc:StartupBrowserCreatorImpl::AddInfoBarsIfNecessary:900中移除GoogleApiKeysInfoBarDelegate::Create(InfoBarService::FromWebContents(
        browser->tab_strip_model()->GetActiveWebContents()));
  • chrome安裝目錄下各個dll檔案的作用
A: http://bbs.kafan.cn/thread-1439185-1-1.html
  • Chromium有那些主要功能模組?
A: base - 基礎模組,放最基本的操作封裝
ash - aura she'll
breakpad - 崩潰捕捉
chrome - 所有的功能都集中在這裡,包含content
cryoto - 加密解密
nataive libary - 替代activex的技術
media - 音訊解碼
ipc - 程序間通訊
jingle - p2p庫
net - 網路通訊元件
ui -----------
  • chrome安裝目錄下各個dll檔案的作用
A:

chrome.dll:瀏覽器的核心檔案,執行chrome幾乎所有的功能;

blink_web.dll:

content.dll: 提供核心多程序的sandbox功能的模組,具體看http://www.chromium.org/developers/content-module

resources.pak:是chrome的資原始檔,包括很多如chrome://開頭的頁面資源等

icudtl.dat:

nacl_irt_x86_32.nexe: Google Native Client相關外掛

net.dll:網路模組

v8.dll:javascript解析引擎模組;

nacl_irt_x86_64.nexe:NACL模組,

mksnapshot.ia32.exe:

d3dcompiler_46.dll:硬體加速匹配模組

blink_platform.dll

sync.dll:

skia.dll:

media.dll:

chrome_200_percent.pak: 高DPI資源,應該是theme資源

nacl64.exe: 難道可以直接執行window上的傳統app?

cc.dll:

gpu.dll

webkit_storage_browser.dll

crnss.dll

ash.dll

ppapi_proxy.dll

icui18n.dll

base_win64.dll:base 64編解碼庫

chrome_100_percent.pak:普通DPI theme資源包

views.dll

base.dll

protoc.exe

policy_component.dll

ffmpegsumo.dll

gcm.dll

gfx.dll

keyboard_resources.pak:

wifi_component.dll:

ppapi_shared.dll

ppapi_shared_win64.dll

yasm.exe

translator.dll

ui_base.dll

libGLESv2.dll

app_list.dll

wtf.dll

message_center.dll

url_matcher.dll

gl_wrapper.dll

gles2_implementation.dll

aura.dll

compositor.dll

crssl.dll

crnspr.dll

metro_driver.dll

content_resources.pak

ipc_win64.dll

printing.dll

net_with_v8.dll

protobuf_lite.dll

base_prefs.dll

events.dll

ipc.dll

delegate_execute.exe

gin.dll

wm_core.dll

url_lib.dll

webkit_storage_common.dll

keyboard.dll

native_theme.dll

gfx_geometry.dll

ash_with_content.dll

wow_helper.exe

gesture_detection.dll

webkit_gpu.dll
webkit_compositor_bindings.dll

webview.dll

shell_dialogs.dll

webdata_common.dll

ppapi_host.dll

blink_heap.dll

chrome_elf.dll

libEGL.dll

webkit_common.dll

mojo_common_lib.dll

webkit_child.dll

shared_memory_support.dll

keyed_service_content.dll

blink_common.dll

browser_ui_views.dll

surface.dll

wtf_unittest_helpers.dll

libvpx_obj_int_extract.exe

mojo_system.dll

locales:

  • chromium中定義的url常量在什麼地方?

A:src\chrome\common\url_constants.cc

A:

1. http://blog.csdn.net/zero_lee/article/details/7896856

2. https://support.google.com/chrome/answer/2918032?hl=en&rd=1

  • 編譯cef3時報錯型別衝突,估計chromium也會遇到吧
c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wtypes.h(501): error C2011: “_COAUTHIDENTITY”:“struct”型別重定義
2>          C:\Program Files (x86)\Windows Kits\8.0\Include\shared\wtypesbase.h(260) : 參見“_COAUTHIDENTITY”的宣告
2>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wtypes.h(512): error C2011: “_COAUTHINFO”:“struct”型別重定義
2>          C:\Program Files (x86)\Windows Kits\8.0\Include\shared\wtypesbase.h(271) : 參見“_COAUTHINFO”的宣告

A:進入C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include,重新命名WTypes.h.

Q: chromium擴充套件中permissions是在哪裡註冊的?

A: 直接參考這個連結吧:http://blog.csdn.net/talking12391239/article/details/40374241