├── en ├── Input │ ├── README.md │ └── chromium_input.md ├── Other │ ├── README.md │ ├── 64-bit_Support.md │ ├── Network_Experiments.md │ ├── Closure_Compiling_Chrome_Code.md │ ├── content_module___content_API.md │ ├── Browser_Components___Layered_Components.md │ ├── Design_docs_that_still_need_to_be_written__wiki_.md │ ├── Transitioning_InlineBoxes_from_floats_to_LayoutUnits.md │ └── In_progress_refactoring_of_key_browser-process_architecture_for_porting.md ├── Building │ ├── README.md │ ├── IDL_build.md │ ├── IDL_compiler.md │ └── GYP_the_build_script_generation_tool..md ├── Graphics │ ├── Overview.md │ ├── README.md │ ├── GPU_Command_Buffer.md │ ├── Graphics_and_Skia.md │ ├── Impl-side_Painting.md │ ├── GPU_Program_Caching.md │ ├── Rendering_Benchmarks.md │ ├── Compositing_in_Blink_WebCore.md │ ├── GPU_Feature_Status_Dashboard.md │ ├── ANGLE_architecture_presentation.md │ ├── Compositor_Thread_Architecture.md │ ├── Rendering_Architecture_Diagrams.md │ ├── Video_Playback_and_Compositor.md │ ├── GPU_Accelerated_Compositing_in_Chrome.md │ └── RenderText_and_Chrome_UI_text_drawing.md ├── Rendering │ ├── README.md │ ├── Multi-column_layout.md │ ├── Blink_Coordinate_Spaces.md │ └── Style_Invalidation_in_Blink.md ├── Security │ ├── README.md │ ├── TPM_Usage.md │ ├── Security_Overview.md │ ├── System_Hardening.md │ ├── Chaps_Technical_Design.md │ ├── Per-page_Suborigins.md │ ├── Encrypted_Partition_Recovery.md │ └── Protecting_Cached_User_Data.md ├── Testing │ ├── README.md │ ├── Generic_theme_for_Test_Shell.md │ ├── Layout_test_results_dashboard.md │ └── Moving_LayoutTests_fully_upstream.md ├── UI_Framework │ ├── Aura.md │ ├── README.md │ ├── NativeControls.md │ ├── Views_framework.md │ ├── UI_Development_Practices.md │ └── views_Windowing_system.md ├── Feature-Specific │ ├── Sync.md │ ├── Video.md │ ├── Find_Bar.md │ ├── Info_Bars.md │ ├── Installer.md │ ├── Instant.md │ ├── Mouse_Lock.md │ ├── Prerender.md │ ├── Printing.md │ ├── README.md │ ├── SafeSearch.md │ ├── Sane_Time.md │ ├── TimeTicks.md │ ├── WebSocket.md │ ├── Web_MIDI.md │ ├── Accessibility.md │ ├── Browser_Window.md │ ├── DNS_Prefetching.md │ ├── Form_Autofill.md │ ├── Geolocation.md │ ├── Isolated_Sites.md │ ├── Preferences.md │ ├── Print_Preview.md │ ├── Site_Isolation.md │ ├── Tab_Helpers.md │ ├── Tab_to_search.md │ ├── Time_Sources.md │ ├── UI_Localization.md │ ├── User_scripts.md │ ├── aboutconflicts.md │ ├── Chromium_Print_Proxy.md │ ├── IDN_in_Google_Chrome.md │ ├── Password_Generation.md │ ├── Plugin_Power_Saver.md │ ├── Secure_Web_Proxy.md │ ├── Service_Processes.md │ ├── Temporary_downloads.md │ ├── Constrained_Popup_Windows.md │ ├── Desktop_Notifications.md │ ├── IndexedDB__early_draft_.md │ ├── Memory_Usage_Backgrounder.md │ ├── Omnibox_IME_Coordination.md │ ├── Ozone_Porting_Abstraction.md │ ├── Tabtastic2_Requirements.md │ ├── Omnibox_Autocomplete │ │ ├── README.md │ │ └── HistoryQuickProvider.md │ ├── Pepper_plugin_implementation.md │ ├── Software_Updates_Courgette.md │ ├── UI_Mirroring_Infrastructure.md │ ├── WebNavigation_API_internals.md │ ├── Media_Router_&_Web_Presentation_API.md │ ├── Rect-based_event_targeting_in_views.md │ ├── Replace_the_modal_cookie_prompt.md │ ├── Linux_Resources_and_Localized_Strings.md │ ├── Auto-Throttled_Screen_Capture_and_Mirroring.md │ ├── DirectWrite_Font_Cache_for_Chrome_on_Windows.md │ ├── Embedding_Flash_Fullscreen_in_the_Browser_Window.md │ └── Extensions_Design_documents_and_proposed_APIs..md ├── Network_stack │ ├── Crypto.md │ ├── Overview.md │ ├── README.md │ ├── Disk_Cache.md │ ├── HTTP_Cache.md │ ├── HTTP_Authentication.md │ ├── Cookie_storage_and_retrieval.md │ ├── Network_Stack_Objectives.md │ ├── Proxy_Settings_and_Fallback.md │ ├── View_network_internals_tool.md │ ├── Debugging_network_proxy_problems.md │ ├── Make_the_web_faster_with_SPDY_pages.md │ ├── _the_web_even_faster_with_QUIC_pages.md │ └── Out_of_Process_Proxy_Resolving_Draft_[unimplemented].md ├── OS-Specific │ ├── README.md │ ├── Mac_OS_X │ │ ├── README.md │ │ ├── Confirm_to_Quit.md │ │ ├── AppleScript_Support.md │ │ ├── Mac_App_Mode__Draft_.md │ │ ├── Sandboxing_Design.md │ │ ├── Wrench_Menu_Buttons.md │ │ ├── Mac_NPAPI_Plugin_Hosting.md │ │ ├── Mac_Fullscreen_Mode__Draft_.md │ │ ├── Menus_Hotkeys_&_Command_Dispatch.md │ │ ├── BrowserWindowController_Object_Ownership.md │ │ ├── Mac_specific_notes_on_UI_Localization.md │ │ ├── Password_Manager_Keychain_Integration.md │ │ ├── OS_X_Interprocess_Communication__Obsolete_.md │ │ ├── Notes_from_meeting_on_IOSurface_usage_and_semantics.md │ │ └── Tab_Strip_Design__Includes_tab_layout_and_tab_dragging_.md │ ├── Android │ │ ├── JNI_Bindings.md │ │ ├── webview_org.png │ │ ├── README.md │ │ └── Java_Resources_on_Android.md │ └── Chrome_OS │ │ ├── README.md │ │ └── Chrome_OS_design_documents_section..md ├── arch.png ├── layer.png ├── hwvideo.png ├── Resource-loading.png ├── in_process_plugins.png ├── rendering_browser.png ├── pluginsoutofprocess.png ├── out_of_process_plugins.png ├── Renderingintherenderer-v2.png ├── General_Architecture │ ├── graph5.png │ ├── legend.png │ ├── sbox_top_diagram.PNG │ ├── JavaScript_engine.md │ ├── download_protection_without_legend.png │ ├── chrome_safe_browsing_wo_legend_wo_download.png │ ├── README.md │ ├── Security_Architecture.md │ ├── Extension_Security_Architecture.md │ ├── Startup.md │ ├── Multi-process_Resource_Loading.md │ ├── HW_Video_Acceleration_in_Chrom{eium}{OS}.md │ ├── OSX_Sandbox_design.md │ ├── Sandbox_FAQ.md │ ├── SafeBrowsing.md │ └── Plugin_Architecture.md ├── Design_docs_in_source_code.md ├── Start_Here_Background_Reading │ └── README.md └── styles │ ├── website.css │ ├── pdf.css │ └── ebook.css ├── zh ├── Input │ ├── README.md │ └── chromium_input.md ├── Other │ ├── README.md │ ├── 64-bit_Support.md │ ├── Network_Experiments.md │ ├── Closure_Compiling_Chrome_Code.md │ ├── content_module___content_API.md │ ├── Browser_Components___Layered_Components.md │ ├── Design_docs_that_still_need_to_be_written__wiki_.md │ ├── Transitioning_InlineBoxes_from_floats_to_LayoutUnits.md │ └── In_progress_refactoring_of_key_browser-process_architecture_for_porting.md ├── Building │ ├── README.md │ ├── IDL_build.md │ ├── IDL_compiler.md │ └── GYP_the_build_script_generation_tool..md ├── Graphics │ ├── Overview.md │ ├── README.md │ ├── GPU_Command_Buffer.md │ ├── Graphics_and_Skia.md │ ├── Impl-side_Painting.md │ ├── GPU_Program_Caching.md │ ├── Rendering_Benchmarks.md │ ├── Compositing_in_Blink_WebCore.md │ ├── GPU_Feature_Status_Dashboard.md │ ├── ANGLE_architecture_presentation.md │ ├── Compositor_Thread_Architecture.md │ ├── Rendering_Architecture_Diagrams.md │ ├── Video_Playback_and_Compositor.md │ ├── GPU_Accelerated_Compositing_in_Chrome.md │ └── RenderText_and_Chrome_UI_text_drawing.md ├── Rendering │ ├── README.md │ ├── Multi-column_layout.md │ ├── Blink_Coordinate_Spaces.md │ └── Style_Invalidation_in_Blink.md ├── Security │ ├── README.md │ ├── TPM_Usage.md │ ├── Security_Overview.md │ ├── System_Hardening.md │ ├── Chaps_Technical_Design.md │ ├── Per-page_Suborigins.md │ ├── Encrypted_Partition_Recovery.md │ └── Protecting_Cached_User_Data.md ├── Testing │ ├── README.md │ ├── Generic_theme_for_Test_Shell.md │ ├── Layout_test_results_dashboard.md │ └── Moving_LayoutTests_fully_upstream.md ├── UI_Framework │ ├── Aura.md │ ├── README.md │ ├── NativeControls.md │ ├── Views_framework.md │ ├── UI_Development_Practices.md │ └── views_Windowing_system.md ├── Feature-Specific │ ├── Sync.md │ ├── Video.md │ ├── Find_Bar.md │ ├── Info_Bars.md │ ├── Installer.md │ ├── Instant.md │ ├── Mouse_Lock.md │ ├── Prerender.md │ ├── Printing.md │ ├── README.md │ ├── SafeSearch.md │ ├── Sane_Time.md │ ├── TimeTicks.md │ ├── WebSocket.md │ ├── Web_MIDI.md │ ├── Accessibility.md │ ├── Browser_Window.md │ ├── DNS_Prefetching.md │ ├── Form_Autofill.md │ ├── Geolocation.md │ ├── Isolated_Sites.md │ ├── Preferences.md │ ├── Print_Preview.md │ ├── Site_Isolation.md │ ├── Tab_Helpers.md │ ├── Tab_to_search.md │ ├── Time_Sources.md │ ├── UI_Localization.md │ ├── User_scripts.md │ ├── aboutconflicts.md │ ├── Chromium_Print_Proxy.md │ ├── IDN_in_Google_Chrome.md │ ├── Password_Generation.md │ ├── Plugin_Power_Saver.md │ ├── Secure_Web_Proxy.md │ ├── Service_Processes.md │ ├── Temporary_downloads.md │ ├── Constrained_Popup_Windows.md │ ├── Desktop_Notifications.md │ ├── IndexedDB__early_draft_.md │ ├── Memory_Usage_Backgrounder.md │ ├── Omnibox_IME_Coordination.md │ ├── Ozone_Porting_Abstraction.md │ ├── Tabtastic2_Requirements.md │ ├── Omnibox_Autocomplete │ │ ├── README.md │ │ └── HistoryQuickProvider.md │ ├── Pepper_plugin_implementation.md │ ├── Software_Updates_Courgette.md │ ├── UI_Mirroring_Infrastructure.md │ ├── WebNavigation_API_internals.md │ ├── Media_Router_&_Web_Presentation_API.md │ ├── Rect-based_event_targeting_in_views.md │ ├── Replace_the_modal_cookie_prompt.md │ ├── Linux_Resources_and_Localized_Strings.md │ ├── Auto-Throttled_Screen_Capture_and_Mirroring.md │ ├── DirectWrite_Font_Cache_for_Chrome_on_Windows.md │ ├── Embedding_Flash_Fullscreen_in_the_Browser_Window.md │ └── Extensions_Design_documents_and_proposed_APIs..md ├── Network_stack │ ├── Crypto.md │ ├── Overview.md │ ├── README.md │ ├── Disk_Cache.md │ ├── HTTP_Cache.md │ ├── HTTP_Authentication.md │ ├── Cookie_storage_and_retrieval.md │ ├── Network_Stack_Objectives.md │ ├── Proxy_Settings_and_Fallback.md │ ├── View_network_internals_tool.md │ ├── Debugging_network_proxy_problems.md │ ├── Make_the_web_faster_with_SPDY_pages.md │ ├── _the_web_even_faster_with_QUIC_pages.md │ └── Out_of_Process_Proxy_Resolving_Draft_[unimplemented].md ├── OS-Specific │ ├── README.md │ ├── Mac_OS_X │ │ ├── README.md │ │ ├── Confirm_to_Quit.md │ │ ├── AppleScript_Support.md │ │ ├── Mac_App_Mode__Draft_.md │ │ ├── Sandboxing_Design.md │ │ ├── Wrench_Menu_Buttons.md │ │ ├── Mac_NPAPI_Plugin_Hosting.md │ │ ├── Mac_Fullscreen_Mode__Draft_.md │ │ ├── Menus_Hotkeys_&_Command_Dispatch.md │ │ ├── BrowserWindowController_Object_Ownership.md │ │ ├── Mac_specific_notes_on_UI_Localization.md │ │ ├── Password_Manager_Keychain_Integration.md │ │ ├── OS_X_Interprocess_Communication__Obsolete_.md │ │ ├── Notes_from_meeting_on_IOSurface_usage_and_semantics.md │ │ └── Tab_Strip_Design__Includes_tab_layout_and_tab_dragging_.md │ ├── Chrome_OS │ │ ├── Chrome_OS_design_documents_section..md │ │ └── README.md │ └── Android │ │ ├── webview_org.png │ │ ├── README.md │ │ ├── Java_Resources_on_Android.md │ │ ├── JNI_Bindings.md │ │ └── WebView_code_organization.md ├── arch.png ├── layer.png ├── hwvideo.png ├── Resource-loading.png ├── in_process_plugins.png ├── rendering_browser.png ├── General_Architecture │ ├── JavaScript_engine.md │ ├── graph5.png │ ├── legend.png │ ├── sbox_top_diagram.PNG │ ├── download_protection_without_legend.png │ ├── chrome_safe_browsing_wo_legend_wo_download.png │ ├── Security_Architecture.md │ ├── Extension_Security_Architecture.md │ ├── Startup.md │ ├── README.md │ ├── Multi-process_Resource_Loading.md │ ├── OSX_Sandbox_design.md │ ├── SafeBrowsing.md │ ├── Sandbox_FAQ.md │ ├── HW_Video_Acceleration_in_Chrom{eium}{OS}.md │ ├── Plugin_Architecture.md │ ├── Conventions_and_patterns_for_multi-platform_development.md │ ├── Process_Models.md │ ├── Profile_Architecture.md │ └── Inter-process_Communication.md ├── pluginsoutofprocess.png ├── out_of_process_plugins.png ├── Design_docs_in_source_code.md ├── Renderingintherenderer-v2.png ├── Start_Here_Background_Reading │ ├── README.md │ ├── Multi-process_Architecture.md │ └── How_Chromium_Displays_Web_Pages.md └── styles │ ├── website.css │ ├── pdf.css │ └── ebook.css ├── LANGS.md ├── 1792645569.jpg ├── book.json ├── .gitignore └── styles ├── website.css ├── ebook.css └── pdf.css /en/Input/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Input/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Building/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Overview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Rendering/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Testing/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/UI_Framework/Aura.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Building/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Overview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Rendering/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Testing/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/UI_Framework/Aura.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Building/IDL_build.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Building/IDL_compiler.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Sync.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Video.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Input/chromium_input.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Crypto.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Overview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/64-bit_Support.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/TPM_Usage.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/UI_Framework/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Building/IDL_build.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Building/IDL_compiler.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Sync.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Video.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Input/chromium_input.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Crypto.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Overview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/64-bit_Support.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/TPM_Usage.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/UI_Framework/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Find_Bar.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Info_Bars.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Installer.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Instant.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Mouse_Lock.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Prerender.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Printing.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/SafeSearch.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Sane_Time.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/TimeTicks.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/WebSocket.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Web_MIDI.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/GPU_Command_Buffer.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Graphics_and_Skia.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Impl-side_Painting.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Disk_Cache.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/HTTP_Cache.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/Network_Experiments.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/Security_Overview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/System_Hardening.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/UI_Framework/NativeControls.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Find_Bar.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Info_Bars.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Installer.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Instant.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Mouse_Lock.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Prerender.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Printing.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/SafeSearch.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Sane_Time.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/TimeTicks.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/WebSocket.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Web_MIDI.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/GPU_Command_Buffer.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Graphics_and_Skia.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Impl-side_Painting.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Disk_Cache.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/HTTP_Cache.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/Network_Experiments.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/Security_Overview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/System_Hardening.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/UI_Framework/NativeControls.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Accessibility.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Browser_Window.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/DNS_Prefetching.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Form_Autofill.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Geolocation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Isolated_Sites.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Preferences.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Print_Preview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Site_Isolation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Tab_Helpers.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Tab_to_search.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Time_Sources.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/UI_Localization.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/User_scripts.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/aboutconflicts.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/GPU_Program_Caching.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Rendering_Benchmarks.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Android/JNI_Bindings.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Chrome_OS/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Rendering/Multi-column_layout.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/Chaps_Technical_Design.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/Per-page_Suborigins.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/UI_Framework/Views_framework.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Accessibility.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Browser_Window.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/DNS_Prefetching.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Form_Autofill.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Geolocation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Isolated_Sites.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Preferences.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Print_Preview.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Site_Isolation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Tab_Helpers.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Tab_to_search.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Time_Sources.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/UI_Localization.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/User_scripts.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/aboutconflicts.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/GPU_Program_Caching.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Rendering_Benchmarks.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Rendering/Multi-column_layout.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/Chaps_Technical_Design.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/Per-page_Suborigins.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/UI_Framework/Views_framework.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Chromium_Print_Proxy.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/IDN_in_Google_Chrome.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Password_Generation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Plugin_Power_Saver.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Secure_Web_Proxy.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Service_Processes.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Temporary_downloads.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Compositing_in_Blink_WebCore.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/GPU_Feature_Status_Dashboard.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/HTTP_Authentication.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Confirm_to_Quit.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/Closure_Compiling_Chrome_Code.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/content_module___content_API.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Rendering/Blink_Coordinate_Spaces.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Rendering/Style_Invalidation_in_Blink.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/Encrypted_Partition_Recovery.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Security/Protecting_Cached_User_Data.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Testing/Generic_theme_for_Test_Shell.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Testing/Layout_test_results_dashboard.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/UI_Framework/UI_Development_Practices.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/UI_Framework/views_Windowing_system.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Chromium_Print_Proxy.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/IDN_in_Google_Chrome.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Password_Generation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Plugin_Power_Saver.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Secure_Web_Proxy.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Service_Processes.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Temporary_downloads.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Compositing_in_Blink_WebCore.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/GPU_Feature_Status_Dashboard.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/HTTP_Authentication.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Confirm_to_Quit.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/Closure_Compiling_Chrome_Code.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/content_module___content_API.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Rendering/Blink_Coordinate_Spaces.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Rendering/Style_Invalidation_in_Blink.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/Encrypted_Partition_Recovery.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Security/Protecting_Cached_User_Data.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Testing/Generic_theme_for_Test_Shell.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Testing/Layout_test_results_dashboard.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/UI_Framework/UI_Development_Practices.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/UI_Framework/views_Windowing_system.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Constrained_Popup_Windows.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Desktop_Notifications.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/IndexedDB__early_draft_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Memory_Usage_Backgrounder.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Omnibox_IME_Coordination.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Ozone_Porting_Abstraction.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Tabtastic2_Requirements.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/ANGLE_architecture_presentation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Compositor_Thread_Architecture.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Rendering_Architecture_Diagrams.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/Video_Playback_and_Compositor.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Cookie_storage_and_retrieval.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Network_Stack_Objectives.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Proxy_Settings_and_Fallback.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/View_network_internals_tool.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/AppleScript_Support.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Mac_App_Mode__Draft_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Sandboxing_Design.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Wrench_Menu_Buttons.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Testing/Moving_LayoutTests_fully_upstream.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Constrained_Popup_Windows.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Desktop_Notifications.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/IndexedDB__early_draft_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Memory_Usage_Backgrounder.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Omnibox_IME_Coordination.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Ozone_Porting_Abstraction.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Tabtastic2_Requirements.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/ANGLE_architecture_presentation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Compositor_Thread_Architecture.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Rendering_Architecture_Diagrams.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/Video_Playback_and_Compositor.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Cookie_storage_and_retrieval.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Network_Stack_Objectives.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Proxy_Settings_and_Fallback.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/View_network_internals_tool.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/AppleScript_Support.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Mac_App_Mode__Draft_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Sandboxing_Design.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Wrench_Menu_Buttons.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Testing/Moving_LayoutTests_fully_upstream.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LANGS.md: -------------------------------------------------------------------------------- 1 | * [English](en/) 2 | * [Chinese](zh/) 3 | -------------------------------------------------------------------------------- /en/Building/GYP_the_build_script_generation_tool..md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Omnibox_Autocomplete/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Pepper_plugin_implementation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Software_Updates_Courgette.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/UI_Mirroring_Infrastructure.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/WebNavigation_API_internals.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/GPU_Accelerated_Compositing_in_Chrome.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Graphics/RenderText_and_Chrome_UI_text_drawing.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Debugging_network_proxy_problems.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Mac_NPAPI_Plugin_Hosting.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/Browser_Components___Layered_Components.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Building/GYP_the_build_script_generation_tool..md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Omnibox_Autocomplete/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Pepper_plugin_implementation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Software_Updates_Courgette.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/UI_Mirroring_Infrastructure.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/WebNavigation_API_internals.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/GPU_Accelerated_Compositing_in_Chrome.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Graphics/RenderText_and_Chrome_UI_text_drawing.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Debugging_network_proxy_problems.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Mac_NPAPI_Plugin_Hosting.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/Browser_Components___Layered_Components.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Media_Router_&_Web_Presentation_API.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Rect-based_event_targeting_in_views.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Replace_the_modal_cookie_prompt.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Make_the_web_faster_with_SPDY_pages.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/_the_web_even_faster_with_QUIC_pages.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Mac_Fullscreen_Mode__Draft_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Media_Router_&_Web_Presentation_API.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Rect-based_event_targeting_in_views.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Replace_the_modal_cookie_prompt.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Make_the_web_faster_with_SPDY_pages.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/_the_web_even_faster_with_QUIC_pages.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Mac_Fullscreen_Mode__Draft_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Linux_Resources_and_Localized_Strings.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Chrome_OS/Chrome_OS_design_documents_section..md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Menus_Hotkeys_&_Command_Dispatch.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/Design_docs_that_still_need_to_be_written__wiki_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Linux_Resources_and_Localized_Strings.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Chrome_OS/Chrome_OS_design_documents_section..md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Menus_Hotkeys_&_Command_Dispatch.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/Design_docs_that_still_need_to_be_written__wiki_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Auto-Throttled_Screen_Capture_and_Mirroring.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/DirectWrite_Font_Cache_for_Chrome_on_Windows.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Omnibox_Autocomplete/HistoryQuickProvider.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/BrowserWindowController_Object_Ownership.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Mac_specific_notes_on_UI_Localization.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Password_Manager_Keychain_Integration.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/Transitioning_InlineBoxes_from_floats_to_LayoutUnits.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Auto-Throttled_Screen_Capture_and_Mirroring.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/DirectWrite_Font_Cache_for_Chrome_on_Windows.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Omnibox_Autocomplete/HistoryQuickProvider.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/BrowserWindowController_Object_Ownership.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Mac_specific_notes_on_UI_Localization.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Password_Manager_Keychain_Integration.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/Transitioning_InlineBoxes_from_floats_to_LayoutUnits.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Embedding_Flash_Fullscreen_in_the_Browser_Window.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Feature-Specific/Extensions_Design_documents_and_proposed_APIs..md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Network_stack/Out_of_Process_Proxy_Resolving_Draft_[unimplemented].md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/OS_X_Interprocess_Communication__Obsolete_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Embedding_Flash_Fullscreen_in_the_Browser_Window.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Feature-Specific/Extensions_Design_documents_and_proposed_APIs..md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Network_stack/Out_of_Process_Proxy_Resolving_Draft_[unimplemented].md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/OS_X_Interprocess_Communication__Obsolete_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Notes_from_meeting_on_IOSurface_usage_and_semantics.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Notes_from_meeting_on_IOSurface_usage_and_semantics.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/OS-Specific/Mac_OS_X/Tab_Strip_Design__Includes_tab_layout_and_tab_dragging_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/Other/In_progress_refactoring_of_key_browser-process_architecture_for_porting.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/OS-Specific/Mac_OS_X/Tab_Strip_Design__Includes_tab_layout_and_tab_dragging_.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zh/Other/In_progress_refactoring_of_key_browser-process_architecture_for_porting.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /en/arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/arch.png -------------------------------------------------------------------------------- /en/layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/layer.png -------------------------------------------------------------------------------- /zh/arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/arch.png -------------------------------------------------------------------------------- /zh/layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/layer.png -------------------------------------------------------------------------------- /1792645569.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/1792645569.jpg -------------------------------------------------------------------------------- /en/hwvideo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/hwvideo.png -------------------------------------------------------------------------------- /zh/hwvideo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/hwvideo.png -------------------------------------------------------------------------------- /en/Resource-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/Resource-loading.png -------------------------------------------------------------------------------- /zh/Resource-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/Resource-loading.png -------------------------------------------------------------------------------- /en/in_process_plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/in_process_plugins.png -------------------------------------------------------------------------------- /en/rendering_browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/rendering_browser.png -------------------------------------------------------------------------------- /zh/in_process_plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/in_process_plugins.png -------------------------------------------------------------------------------- /zh/rendering_browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/rendering_browser.png -------------------------------------------------------------------------------- /en/pluginsoutofprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/pluginsoutofprocess.png -------------------------------------------------------------------------------- /zh/General_Architecture/JavaScript_engine.md: -------------------------------------------------------------------------------- 1 | 可以查看[V8](http://code.google.com/apis/v8/)的文档, 这是Chromium使用的Javascript引擎 -------------------------------------------------------------------------------- /zh/pluginsoutofprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/pluginsoutofprocess.png -------------------------------------------------------------------------------- /en/out_of_process_plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/out_of_process_plugins.png -------------------------------------------------------------------------------- /zh/OS-Specific/Chrome_OS/README.md: -------------------------------------------------------------------------------- 1 | 查看[Chrome OS设计文档相关章节](https://www.chromium.org/chromium-os/chromiumos-design-docs) -------------------------------------------------------------------------------- /zh/out_of_process_plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/out_of_process_plugins.png -------------------------------------------------------------------------------- /en/Renderingintherenderer-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/Renderingintherenderer-v2.png -------------------------------------------------------------------------------- /zh/Design_docs_in_source_code.md: -------------------------------------------------------------------------------- 1 | ##See Also: 源代码中的设计文档 2 | 3 | https://chromium.googlesource.com/chromium/src/+/master/docs/ -------------------------------------------------------------------------------- /zh/Renderingintherenderer-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/Renderingintherenderer-v2.png -------------------------------------------------------------------------------- /en/General_Architecture/graph5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/General_Architecture/graph5.png -------------------------------------------------------------------------------- /en/General_Architecture/legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/General_Architecture/legend.png -------------------------------------------------------------------------------- /zh/General_Architecture/graph5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/General_Architecture/graph5.png -------------------------------------------------------------------------------- /zh/General_Architecture/legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/General_Architecture/legend.png -------------------------------------------------------------------------------- /en/OS-Specific/Android/webview_org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/OS-Specific/Android/webview_org.png -------------------------------------------------------------------------------- /zh/OS-Specific/Android/webview_org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/OS-Specific/Android/webview_org.png -------------------------------------------------------------------------------- /en/Design_docs_in_source_code.md: -------------------------------------------------------------------------------- 1 | ##See Also: Source code in design document 2 | 3 | https://chromium.googlesource.com/chromium/src/+/master/docs/ -------------------------------------------------------------------------------- /en/General_Architecture/sbox_top_diagram.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/General_Architecture/sbox_top_diagram.PNG -------------------------------------------------------------------------------- /zh/General_Architecture/sbox_top_diagram.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/General_Architecture/sbox_top_diagram.PNG -------------------------------------------------------------------------------- /en/General_Architecture/JavaScript_engine.md: -------------------------------------------------------------------------------- 1 | Also see the documentation for [V8](http://code.google.com/apis/v8/), which is the JavaScript engine used within Chromium. -------------------------------------------------------------------------------- /book.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["disqus"], 3 | "pluginsConfig": { 4 | "disqus": { 5 | "shortName": "ahangchen-blog" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /zh/OS-Specific/Android/README.md: -------------------------------------------------------------------------------- 1 | # Android 2 | - [JNI绑定](JNI_Binding.md) 3 | - [Android上的Java资源](Java_Resources_on_Android.md) 4 | - [WebView代码组织](WebView_code_organization.md) 5 | -------------------------------------------------------------------------------- /en/General_Architecture/download_protection_without_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/General_Architecture/download_protection_without_legend.png -------------------------------------------------------------------------------- /zh/General_Architecture/download_protection_without_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/General_Architecture/download_protection_without_legend.png -------------------------------------------------------------------------------- /en/General_Architecture/chrome_safe_browsing_wo_legend_wo_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/en/General_Architecture/chrome_safe_browsing_wo_legend_wo_download.png -------------------------------------------------------------------------------- /zh/General_Architecture/chrome_safe_browsing_wo_legend_wo_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hirokith/Chromium_doc_zh/master/zh/General_Architecture/chrome_safe_browsing_wo_legend_wo_download.png -------------------------------------------------------------------------------- /en/OS-Specific/Android/README.md: -------------------------------------------------------------------------------- 1 | # Android 2 | - [JNI Binding](JNI_Binding.md) 3 | - [Java Resource on Android](Java_Resources_on_Android.md) 4 | - [WebView code organization](WebView_code_organization.md) -------------------------------------------------------------------------------- /zh/Start_Here_Background_Reading/README.md: -------------------------------------------------------------------------------- 1 | - [Start Here: 背景阅读](Start_Here_Background_Reading/README.md): 描述Chromium的宏观架构 2 | - [多线程架构](Multi-process_Architecture.md) 3 | 4 | **Note**: 设计文档的大部分剩余部分都认为你对上面这个文档里的内容非常熟悉。 5 | 6 | - [Chromium如何展示web界面](How_Chromium_Displays_Web_Pages.md): 自底向上概述WebKit是如何嵌入到Chromium中的 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node rules: 2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 3 | .grunt 4 | 5 | ## Dependency directory 6 | ## Commenting this out is preferred by some people, see 7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 8 | node_modules 9 | 10 | # Book build output 11 | _book 12 | 13 | # eBook build output 14 | *.epub 15 | *.mobi 16 | *.pdf 17 | -------------------------------------------------------------------------------- /en/Start_Here_Background_Reading/README.md: -------------------------------------------------------------------------------- 1 | - [Start Here: Background Reading](Start_Here_Background_Reading/README.md): Describes the high-level architecture of Chromium 2 | - [Multi-process Architecture](Multi-process_Architecture.md) 3 | 4 | **Note**: Most of the rest of the design documents assume familiarity with the concepts explained in this document. 5 | 6 | - [How Chromium Displays Web Pages](How_Chromium_Displays_Web_Pages.md): Bottom-to-top overview of how WebKit is embedded in Chromium -------------------------------------------------------------------------------- /zh/General_Architecture/Security_Architecture.md: -------------------------------------------------------------------------------- 1 | #Chromium浏览器安全架构 2 | 3 | 大部分当前web浏览器使用一种将用户和网络结合成一个单一保护域的单片结构。在这样的浏览器中,攻击者可以利用任意代码执行漏洞,盗取敏感信息或者安装恶意软件。在这篇文章里,我们展示了Chromium的安全架构。Chromium有着两个处于独立保护域 的模块:一个是浏览器内核,与操作系统交互,一个是渲染引擎,运行在只有限制权限的沙箱中。这种架构有助于减少高危攻击,而不牺牲与现有网站的兼容性。我们为浏览器漏洞定义了一个威胁模型,并评估了这种架构会如何减少过去的问题。 4 | 5 | 6 | **[The Security Architecture of the Chromium Browser](http://seclab.stanford.edu/websec/chromium/chromium-security-architecture.pdf)** 7 | 8 | [Adam Barth](http://www.adambarth.com/), [Collin Jackson](http://www.collinjackson.com/), [Charles Reis](http://www.cs.washington.edu/homes/creis/), and [The Google Chrome Team](http://www.google.com/chrome) 9 | Technical Report 2008 10 | 11 | [More Stanford web security research](http://seclab.stanford.edu/websec/) -------------------------------------------------------------------------------- /zh/General_Architecture/Extension_Security_Architecture.md: -------------------------------------------------------------------------------- 1 | #Web安全研究 2 | ##保护浏览器不受扩展的缺陷影响 3 | 4 | [保护浏览器不受扩展的缺陷影响](http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-185.pdf) 5 | 6 | [Adam Barth](http://www.adambarth.com/), [Adrienne Porter Felt](http://www.eecs.berkeley.edu/~afelt/), [Prateek Saxena](http://www.cs.berkeley.edu/~prateeks/), and [Aaron Boodman](http://www.aaronboodman.com/) 7 | 8 | *EECS Department. University of California, Berkeley. Technical Report No. UCB/EECS-2009-185* 9 | ###摘要 10 | 11 | 浏览器扩展非常流行,三分之一的Firefox用户运行至少一个扩展。尽管出于好意,扩展的开发者通常不是安全专家,并且会写有bug的代码,而这可能被网站操作者利用。在Firefox扩展系统中,这种利用很危险,因为扩展运行时拥有用户的完全权限,可以读写任意文件,启动新的进程。在这篇文章里,我们分析了25个最受欢迎的火狐扩展,并且发现这些扩展中的88%不需要完整的可用权限。另外,我们发现这些扩展中的76%不必要地使用了功能强大的api,使得降低他们的权限变得困难。我们提出一个新的浏览器扩展系统,通过使用最少的权限,权限分割,强解耦,提高安全性。我们的系统限制了一个攻击者通过扩展的缺陷所能做到的罪行。我们的设计被Google Chrome扩展系统接受。 12 | 13 | 14 | 这篇文章的一个扩展版本可以在Proc. of the 17th Network and Distributed System Security Symposium (NDSS 2010)看到。 15 | 16 | [更多Berkeley web安全研究>>](http://webblaze.cs.berkeley.edu/) -------------------------------------------------------------------------------- /zh/General_Architecture/Startup.md: -------------------------------------------------------------------------------- 1 | #启动 2 | Chrome大部分时候作为一个独立可执行程序运行,它知道怎样运行我们使用的各种有趣的进程。 3 | 4 | 这是具体过程: 5 | 1. 首先,我们有一个平台相关的入口: Windows上是wWinMain(),Linux上是main()。这存在于chrome/app/chrome_exe_main_* 这样的文件中。在Mac和Windows上,这个函数会加载下面所描述的模块,在Linux上,它会做很少事情,几个平台上,它们最终都会调用: 6 | 2. ChromeMain(),它是跨平台代码在所有Chrome进程生命周期中运行的地方,存在于chrome/app/chrome_main*。例如,这是我们调用模块初始化的地方,比如日志和ICU。然后我们会检查其内部 -process-type开关,然后分发给: 7 | 3. 一个进程类型相关的主函数,比如BrowserMain()(给外部浏览器进程)或者RenderMain()(给标签页相关的渲染器进程)。 8 | 9 | 10 | ##平台相关入口 11 | 12 | ###Windows 13 | 14 | 在Windows上,我们用DLL构建Chrome的组件。wWinMain加载chrome.dll,然后做一些其他随机的事情,然后在DLL中调用ChromeMain。 15 | 16 | 17 | ###Mac 18 | 19 | Mac上,Chrome也打包为框架和一个可执行文件,但它们被链接在一块:main()直接调用ChromeMain()。还有第二个入口,在chrome_main_app_mode_mac.mm中,作为app模式快捷方式:“在Mac上,谁也不能用命令行参数创建快捷方式”。相反,我们,做了小的app包,它们找到并加载Chromium框架,传递合适的数据。“这个可执行程序也会调用ChromeMain()。 20 | 21 | 22 | ###Linux 23 | 24 | 在Linux上,对于沙箱,我们通过重复地从helper进程fork出子进程。这意味着新的子进程不会再次进入main(),但相反的,会在启动过程中,从副本唤醒。helper进程的初始启动仍然在正常的启动路径中执行,所以任何在ChromeMain()中的初始化对于子进程来说都是已经运行过的,但它们都会共享同一个初始化过程。 25 | 26 | -------------------------------------------------------------------------------- /zh/General_Architecture/README.md: -------------------------------------------------------------------------------- 1 | ##[Chromium整体架构](README.md) 2 | > Translated by [ahangchen](https://github.com/ahangchen/) 3 | 4 | 将Chromium设计文档页面的内容整理成markdown格式,并翻译成中文,整体架构方面已翻译完成。 5 | 6 | 原本是出于了解更多关于Android Webview的相关知识的目的开始翻译,但学到的更多的是架构设计方面的内容。 7 | 8 | > 翻译了这个部分后发现工作量挺大的,希望感兴趣的同学[一起来翻译](https://github.com/ahangchen/Chromium_doc_zh),共同进步。 9 | 10 | 11 | - [跨平台开发的约定与模式](Conventions_and_patterns_for_multi-platform_development.md) 12 | - [扩展安全架构](Extension_Security_Architecture.md): 扩展系统是如何降低扩展脆弱性的严重程度的 13 | - [硬件视频加速](HW_Video_Acceleration_in_Chrom{eium}{OS}.md) 14 | - [跨进程通信](Inter-process_Communication.md): 浏览进程,绘制器,插件进程是如何交流的 15 | - [多进程资源加载](Multi-process_Resource_Loading.md): 页面和图像是如何从网络加载到绘制器中的 16 | - [插件架构](Plugin_Architecture.md) 17 | - [进程模型](Process_Models.md): 我们创建新绘制进程的策略 18 | - [Profile架构](Profile_Architecture.md) 19 | - [安全浏览](SafeBrowsing.md) 20 | - [沙箱](Sandbox.md) 21 | - [沙箱FAQ](Sandbox_FAQ.md) 22 | - [OSX中的沙箱设计](OSX_Sandbox_design.md) 23 | - [安全架构](Security_Architecture.md): Chromium沙箱绘制引擎是如何保护免受恶意软件侵害的 24 | - [启动](Startup.md) 25 | - [线程](Threading.md): 在Chromium中如何使用线程 26 | 27 | 也可以看看 [V8](http://code.google.com/apis/v8/)的文档, 这是Chromium使用的Javascript引擎 28 | 29 | 30 | > 觉得有帮助的话,不给个star? https://github.com/ahangchen/Chromium_doc_zh 31 | -------------------------------------------------------------------------------- /en/General_Architecture/README.md: -------------------------------------------------------------------------------- 1 | ##General Architecture 2 | 3 | - [General Architecture](README.md) 4 | - [Conventions and patterns for multi-platform development](Conventions_and_patterns_for_multi-platform_development.md) 5 | - [Extension Security Architecture](Extension_Security_Architecture.md): How the extension system helps reduce the severity of extension vulnerabilities 6 | - [HW Video Acceleration in Chrom{e,ium}{,OS}](HW_Video_Acceleration_in_Chrom{eium}{OS}.md) 7 | - [Inter-process Communication](Inter-process_Communication.md): How the browser, renderer, and plugin processes communicate 8 | - [Multi-process Resource Loading](Multi-process_Resource_Loading.md): How pages and images are loaded from the network into the renderer 9 | - [Plugin Architecture](Plugin_Architecture.md) 10 | - [Process Models](Process_Models.md): Our strategies for creating new renderer processes 11 | - [Profile Architecture](Profile_Architecture.md) 12 | - [SafeBrowsing](SafeBrowsing.md) 13 | - [Sandbox](Sandbox.md) 14 | - [Security Architecture](Security_Architecture.md): How Chromium's sandboxed rendering engine helps protect against malware 15 | - [Startup](Startup.md) 16 | - [Threading](Threading.md): How to use threads in Chromium 17 | Also see the documentation for [V8](http://code.google.com/apis/v8/), which is the JavaScript engine used within Chromium. -------------------------------------------------------------------------------- /en/General_Architecture/Security_Architecture.md: -------------------------------------------------------------------------------- 1 | #The Security Architecture of the Chromium Browser 2 | 3 | Most current web browsers employ a monolithic architecture that combines "the user" and "the web" into a single protection domain. An attacker who exploits an arbitrary code execution vulnerability in such a browser can steal sensitive files or install malware. In this paper, we present the security architecture of Chromium, the open-source browser upon which Google Chrome is built. Chromium has two modules in separate protection domains: a browser kernel, which interacts with the operating system, and a rendering engine, which runs with restricted privileges in a sandbox. This architecture helps mitigate high-severity attacks without sacrificing compatibility with existing web sites. We define a threat model for browser exploits and evaluate how the architecture would have mitigated past vulnerabilities. 4 | 5 | 6 | **[The Security Architecture of the Chromium Browser](http://seclab.stanford.edu/websec/chromium/chromium-security-architecture.pdf)** 7 | 8 | [Adam Barth](http://www.adambarth.com/), [Collin Jackson](http://www.collinjackson.com/), [Charles Reis](http://www.cs.washington.edu/homes/creis/), and [The Google Chrome Team](http://www.google.com/chrome) 9 | Technical Report 2008 10 | 11 | [More Stanford web security research](http://seclab.stanford.edu/websec/) -------------------------------------------------------------------------------- /zh/General_Architecture/Multi-process_Resource_Loading.md: -------------------------------------------------------------------------------- 1 | #多进程资源加载(需要更新) 2 | 3 | ##背景知识 4 | 5 | 所有网络交流都是在主浏览器进程处理的。这样浏览器进程不仅可以控制每个渲染器的网络访问,还可以在进程间维持session状态一致性,像cookie和缓存数据。另一个重要的原因是,作为一个HTTP/1.1的用户代理,浏览器整体上在每个host上不能打开太多连接。 6 | 7 | ##概述 8 | 9 | 我们的多进程应用程序可以从三个层面来看。在最底层是WebKit库,用来渲染页面。在它上面是渲染器进程(简单地,每个标签页对应一个进程),每个进程包含一个WebKit实例。管理所有渲染器的是浏览器进程,控制所有的网络访问。 10 | 11 | 12 | ![](../Resource-loading.png) 13 | 14 | 15 | ##Blink(刷新器) 16 | 17 | Blink有一个ResourceLoader对象,负责获取数据。每个加载器有一个WebURLLoader以展现真实的请求。这个实例的头文件在Blink仓库中。 18 | 19 | ResourceLoader实现了WebURLLoaderClient接口。这是渲染器使用的回调接口,用以获取数据和其他刷新用的事件。 20 | 21 | 测试shell使用一个不同的资源加载器,提供了不同的实现,即,一个非IPC版本的ResourceLoaderBridge,位于webkit/tools/test_shell/simple_resource_loader_bridge。 22 | 23 | ##渲染器 24 | 25 | 渲染器对WebURLLoader的实现,成为WebURLLoaderImplementation,位于content/child。它使用全局的ResourceDispatcher单例对象(每个渲染器内部单例),来创建一个唯一的request ID,通过IPC转发这个request给浏览器。浏览器的响应会引用这个request ID,将其转换后,通过资源分发起返回给RequestPeer对象(WebURLRequestImpl)。 26 | 27 | ##浏览器 28 | 29 | 浏览器中的RenderProcessHost对象从每个渲染器接收IPC请求。使用指向渲染进程host的指针(尤其是,ResourceDispatcherHost::Receiver),转发这些请求给全局的ResourceDispatcherHost,并且用渲染器生成的request ID唯一标识这些请求。 30 | 31 | 然后,每个请求会被转换成一个URLRequest对象,反过来将其转发给它内部的URLRequestJob(它实现了需要的特殊协议).当URLRequest生成通知时,它的ResourceDispatcherHost::Receiver和request ID会被用于将通知发送给正确的RenderProcessHost,以将其发回给渲染器。因为渲染器生成的ID被保留,将所有的响应与一个特定的一开始由WebKit生成的请求关联起来成为可能。 32 | 33 | 34 | ##Cookies 35 | 36 | 所有的cookies由我们的CookieMonster对象处理,位于/net/base中。我们不会与WinInet共享cookie。这个浏览进程中的CookieMonster处理所有的网络请求,因为所有标签页之间的cookie必须相同。 37 | 38 | 页面可以通过document.cookie为一个document请求cookie。这种情况下,我们从渲染器向李兰器发送一个同步消息来请求cookie。当浏览器在处理cookie时,WebKit的工作线程会挂起。当渲染器的I/O线程接受到浏览器的响应时,它会解除这个线程挂起,然后把结果传回给JavaScript引擎。 39 | -------------------------------------------------------------------------------- /en/General_Architecture/Extension_Security_Architecture.md: -------------------------------------------------------------------------------- 1 | #Web Security Research 2 | ##Protecting Browsers from Extension Vulnerabilities 3 | 4 | [Protecting Browsers from Extension Vulnerabilities](http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-185.pdf) 5 | 6 | [Adam Barth](http://www.adambarth.com/), [Adrienne Porter Felt](http://www.eecs.berkeley.edu/~afelt/), [Prateek Saxena](http://www.cs.berkeley.edu/~prateeks/), and [Aaron Boodman](http://www.aaronboodman.com/) 7 | 8 | *EECS Department. University of California, Berkeley. Technical Report No. UCB/EECS-2009-185* 9 | ###Abstract 10 | 11 | Browser extensions are remarkably popular, with one in three Firefox users running at least one extension. Although well-intentioned, extension developers are often not security experts and write buggy code that can be exploited by malicious web site operators. In the Firefox extension system, these exploits are dangerous because extensions run with the user's full privileges and can read and write arbitrary files and launch new processes. In this paper, we analyze 25 popular Firefox extensions and find that 88% of these extensions need less than the full set of available privileges. Additionally, we find that 76% of these extensions use unnecessarily powerful APIs, making it difficult to reduce their privileges. We propose a new browser extension system that improves security by using least privilege, privilege separation, and strong isolation. Our system limits the misdeeds an attacker can perform through an extension vulnerability. Our design has been adopted as the Google Chrome extension system. 12 | 13 | An extended version of this paper will appear at Proc. of the 17th Network and Distributed System Security Symposium (NDSS 2010). 14 | 15 | [More Berkeley web security research >>](http://webblaze.cs.berkeley.edu/) -------------------------------------------------------------------------------- /zh/OS-Specific/Android/Java_Resources_on_Android.md: -------------------------------------------------------------------------------- 1 | #Android上的Java资源 2 | ##概览 3 | 4 | Android上的Chrome使用了Java代码中的一些资源(例如,Android layout和相关的字符串或图像)。这些资源依照Android的资源目录结构存储于Java根目录内, 5 | 6 | * content/public/android/java/res - Java resources available within content and anything that depends on content 7 | * chrome/android/java/res - Java resources available within chrome and anything that depends on chrome 8 | * ui/android/java/res - Java resources available within ui and anything that depends on ui 9 | 10 | Java代码可以使用自动生成的R类正常地引用这些资源,但请确认使用正确的包名修饰R类。 11 | ```java 12 | // Use a resource from content 13 | setImageResource(org.chromium.content.R.drawable.globe_favicon); 14 | 15 | // Use a resource from chrome 16 | setContentView(org.chromium.chrome.R.layout.month_picker); 17 | ``` 18 | ##资源如何打包 19 | 20 | 在编译Java代码时,会基于Java上下文资源生成一个R.java文件。这个R.java包含了一些非常量的变量,只在编译(以及任何基于content的非APK目的)的时候使用,R.java不会被包含在content jar包中。 21 | 22 | 在构建一个APK的时候,比如content_shell_apk,资源会从content、任何其他依赖、content shell本身中合并进来。这些合并的资源会得到处理并包含在APK中。基于这些资源,会生成一个有着正确的资源->ID映射的新的R.java文件。这个R.java会被复制到每个依赖R的包中 (例如. org.chromium.content.R和org.chromium.content_shell.R), 所有这些副本会被包含在APK中。 23 | 24 | 这个过程遵循Android对于library工程的资源的处理方式,在这些工程中,content和chrome都是library,尽管我们不会用Android的SDK去编译我们的library。因此同样有些警告是有效的。尤其是,两个有着相同ID的资源不可以共存。在最高依赖链(比如,在content shell)上的资源会覆盖其他的资源(比如,在content中)。 25 | 26 | ##支持gyp资源 27 | 28 | 为了增加资源到另一个Java根目录,需要添加has_java_resources, R_package, 和 R_package_relpath变量到gyp target,以构建java代码。例如: 29 | ```json 30 | { 31 | 'target_name': 'content_java', 32 | 'type': 'none', 33 | 'dependencies': [ ... ], 34 | 'variables': { 35 | 'package_name': 'content', 36 | 'java_in_dir': '../content/public/android/java', 37 | 38 | # Support Java resources in content 39 | 'has_java_resources': 1, 40 | 'R_package': 'org.chromium.content', 41 | 'R_package_relpath': 'org/chromium/content', 42 | }, 43 | 'includes': [ '../build/java.gypi' ], 44 | }, 45 | ``` -------------------------------------------------------------------------------- /en/General_Architecture/Startup.md: -------------------------------------------------------------------------------- 1 | #Startup 2 | Chrome is (mostly) shipped as a single executable that knows how to run as all the interesting sorts of processes we use. 3 | Here's an overview of how that works. 4 | 1. First there's the platform-specific entry point: wWinMain() on Windows, main() on Linux. This lives in chrome/app/chrome_exe_main_*. On Mac and Windows, that function loads modules as described later, while on Linux it does very little, and all of them call into: 5 | 2. ChromeMain(), which is the place where cross-platform code that needs to run in all Chrome processes lives. It lives in chrome/app/chrome_main*. For example, here is where we call initializers for modules like logging and ICU. We then examine the internal --process-type switch and dispatch to: 6 | 3. A process-type-specific main function such as BrowserMain() (for the outer browser process) or RendererMain() (for a tab-specific renderer process). 7 | 8 | ##Platform-specific entry points 9 | 10 | ###Windows 11 | 12 | On Windows we build the bulk of Chrome as a DLL. (XXX: why?) wWinMain loads chrome.dll, does some other random stuff (XXX: why?) and calls ChromeMain in the DLL. 13 | 14 | ###Mac 15 | 16 | Mac is also packaged as a framework and an executable, but they're linked together: main() calls ChromeMain() directly. There is also a second entry point, in chrome_main_app_mode_mac.mm, for app mode shortcuts: "On Mac, one can't make shortcuts with command-line arguments. Instead, we produce small app bundles which locate the Chromium framework and load it, passing the appropriate data." This executable also calls ChromeMain(). 17 | 18 | ###Linux 19 | 20 | On Linux due to the sandbox we launch subprocesses by repeatedly forking from a helper process. This means that new subprocesses don't enter through main() again, but instead resume from clones in the middle of startup. The initial launch of the helper process still executes the normal startup path, so any initialization that happens in ChromeMain() will have been run for all subprocesses but they will all share the same initialization. 21 | 评论 22 | 您没有权限添加评论。 23 | 登录|最近的网站活动|举报滥用行为|打印页面|由 Google 协作平台强力驱动 24 | -------------------------------------------------------------------------------- /zh/General_Architecture/OSX_Sandbox_design.md: -------------------------------------------------------------------------------- 1 | #OS X 沙箱设计 2 | 这个文档描述了Mac OS X上的进程沙箱机制。 3 | 4 | ##背景 5 | 6 | 沙箱将进程视为一种恶劣的环境,因为进程任何时候都可能被一个恶意攻击者借由缓冲区溢出或者其他这样的攻击方式所影响。一旦进程被影响,我们的目标就变成了,让这个有问题的进程能访问的用户机器的资源越少越好,并尽量避免在标准文件系统访问控制以外,以及内核执行的用户/组进程控制相关的行为。 7 | 8 | 查看概述文档了解目标与整体架构图表。 9 | 10 | ##实现 11 | 12 | 在Mac OS X上,从Leopard版本开始,每个进程通过使用BSD沙箱设施(在一些Apple的文档中也被成为Seatbelt)拥有自己的权限限制。这由一系列独立的API调用组成,sandbox_init(),设置进程彼时的访问限制。这意味着即使新的权限拒绝访问任何新创建的文件描述符,之前打开的文件描述符仍然生效。我们可以通过在进程启动前正确地设置来利用这一点,在我们将渲染器暴露给任何第三方输入(html,等等)前,切断所有访问。 13 | 14 | Seatbelt不会限制内存分配,多线程,或者对先前打开的系统设施的访问。因此,这应该不会影响其他的需求或者严重影响我们的IPC设计。 15 | 16 | OS X提供了对缓冲区溢出提供了额外的保护。在Leopard中,栈被标志为不可执行内存,因此更不易被作为执行恶意代码的攻击方向。这不能避免堆的内存溢出,但对于64位应用,除非内存的一部分被显式标识为可执行,否则Leopard不允许任何执行代码的企图。随着我们将来转入64位渲染器进程,这会变成另一个吸引人的安全特性。 17 | 18 | sandbox_init()支持预定义沙箱访问限制和提供更精细控制的沙箱配置脚本。 19 | 20 | Chromium使用的自定义沙箱配置在源代码树的.sb文件中。 21 | 22 | 我们定义了下面这些配置文件(路径相对于源代码根目录): 23 | 24 | * content/common/common.sb - 用于所有沙箱的常用安装 25 | * content/renderer/renderer.sb - 用于扩展和渲染器进程。允许访问字体服务器。 26 | * chrome/browser/utility.sb - 用于工具进程。允许访问单一可配置目录。 27 | * content/browser/worker.sb - 用于工作进程。限制度最高 - 除了加载系统库之外,没有文件系统访问权限。 28 | * chrome/browser/nacl_loader.sb - 用户允许不受信任的原生客户端代码(例如,“user”)。 29 | 30 | 一个让我们不愉快的点是,沙箱进程通过OS X系统API调用。而且没有每个API需要哪些权限的文档,比如它们是否需要访问磁盘文件,或者是否会调用沙箱限制访问的其他API?目前,我们的方法是,在打开沙箱前,对任何可能有问题的API调用做“热身”。例如,颜色配置和共享库可以在我们锁定进程前从磁盘加载。 31 | 32 | 33 | SandboxInitWrapper::InitializeSandbox()是初始化沙箱的主要入口,它按以下步骤执行: 34 | 35 | * 判断当前进程的类型是否需要沙箱化,如果需要,判断需要使用哪种沙箱配置。 36 | * 通过调用sandbox::SandboxWarmup() “热身”相关"系统API。 37 | * 通过调用sandbox::EnableSandbox()启动沙箱。 38 | 39 | ###调试 40 | 41 | OS X沙箱实现支持下面这些标志位: 42 | 43 | * --no-sandbox - 关闭整个沙箱 44 | * --enable-sandbox-logging - 关于哪个系统调用正在阻塞的详细信息被记录到syslog 45 | 46 | [Debugging Chrome on OS X](https://www.chromium.org/developers/how-tos/debugging-on-os-x)里有更多关于调试和Mac OS X 沙箱API诊断工具的文档。 47 | 48 | ##扩展阅读 49 | 50 | * http://reverse.put.as/wp-content/uploads/2011/09/Apple-Sandbox-Guide-v1.0.pdf 51 | * http://www.318.com/techjournal/?p=107 52 | * 沙箱手册页 (man 7 sandbox) 53 | * 系统沙箱文件可以在下面的路径之一找到(取决于系统版本): 54 | 55 | * /Library/Sandbox/Profiles 56 | * /System/Library/Sandbox/Profiles 57 | * /usr/share/sandbox -------------------------------------------------------------------------------- /zh/General_Architecture/SafeBrowsing.md: -------------------------------------------------------------------------------- 1 | #安全浏览 2 | 3 | ##浏览保护 4 | 5 | 启动安全浏览后,在允许内容开始加载前,所有的URL都会被检查。URL通过两个列表进行检查:恶意软件和钓鱼网站。根据匹配到的列表,我们会在一个中转页面显示不同的警告页面。 6 | 7 | 检查安全浏览数据库是一个多步骤的过程。 8 | - URL首先会被哈希,然后会用内存中前缀列表进行同步的检查。 9 | - 如果前缀得到匹配,会向安全浏览服务器发起一个异步请求,拉取这个前缀的全量哈希列表。 10 | - 一旦这个列表返回,完整的哈希会与列表中的每项进行比较,URL请求可以继续执行或者终止。 11 | - 如果想要知道更多内容,你可以查看安全浏览协议的完整描述。 12 | 13 | ###资源处理器 14 | 15 | 当一个资源被请求时,ResourceDispatcherHost会创建一串的ResourceHandlers。对于加载资源时的每个事件,每个处理器可以选择取消请求,延迟请求(在决定要做的事情前,做一些异步工作),或者继续(让处理链中下一个处理器做决策)。SafeBrowsingResourceHandler在链的头部创建,所以它对于是否允许加载资源有着优先权。如果安全浏览被关闭,SafeBrowsingResourceHandler就不加入链中,因此没有浏览相关的安全浏览动作会发生。 16 | 17 | ###安全浏览中间页面 18 | 19 | 当资源被标识为不安全时,资源请求会被暂停,并展示一个中间页面(SafeBrowsingBlockingPage)。用户可以选择继续,这会唤醒资源请求,或者返回,这会取消资源请求,然后返回之前的页面。 20 | 21 | 22 | ###一些威胁细节的收集 23 | 24 | 如果中间页面是因为命中下面这些规则而展现:处于威胁列表中(包括恶意软件,钓鱼网站,以及Uws),页面是http而非https,标签页不处于一个匿名窗口中,那么会有一个可选项,让你发送关于这个不安全资源的具体细节,以进行更进一步的分析。 25 | 26 | 当中间页面出现时,一个IPC会发送给渲染器进程,从DOM收集细节。这些数据由一棵URL树组成,有各种frame,iframe,脚本,和嵌入标签。 27 | 28 | 如果用户勾选了忽视中间页面,各种具体细节会异步地在浏览器端收集。首先会查询历史服务以获得所有URL的重定向列表,然后会查询Cache以获得这些URL请求的头,最后发送一个报告。 29 | 30 | ##下载保护 31 | 32 | ###URL检查 33 | 34 | 下载检查操作与浏览页面的操作类似,尽管由于下载的本质不同会有一些差异。在接收到头之前,我们都不知道一个资源请求是否是一个下载请求,因此所有下载也会通过浏览检查。同理,我们不能检查重定向URL,因为在浏览测试中我们已经放过它了。相反,重定向链保存在一个URLRequest对象里,一旦我们开始下载检查,链中所有的URL同时会被检查。因为下载不像页面加载那样具备潜在的敏感,我们也会在内存数据库和全量哈希结果中分发要检查的内容。最后,检查与下载并行完成,而不会阻塞下载结果直到检查完成,然而直到检查完成前,文件都会被赋予一个临时的名字。 35 | 36 | 如果一个下载被标记为恶意的,下载栏的这个项目会被替换为一个警告和一个保留或删除该文件的按钮。如果选择了删除,下载会被取消,文件会被删除。如果选择了保留,文件会被重命名为它原来的名字(如果下载仍在进行,后缀会是.crdownload)。 37 | 38 | 39 | ###哈希检查 40 | 41 | 文件下载时,我们也会计算文件数据的哈希值。一旦文件完成下载,这个哈希值就会与下载摘要列表进行对照。当前我们在评估哈希检查的有效性,所以不会有UI展示出来。 42 | 43 | 这是处理一个请求的代码流的概览。一些细节被隐藏以保证规模的合理性。绿线意味着一种常见情况,加载非恶意页面的页面时,需要同步检查内存中安全浏览数据库。短划线表示异步调用。点状箭头表示对Google安全浏览器的请求。 44 | 45 | 46 | ![](legend.png) 47 | ![](download_protection_without_legend.png) 48 | 49 | ##客户端钓鱼检测 50 | 51 | 客户端钓鱼检测运行在用户访问的页面的检测模式上,以检测钓鱼网站没有被列入安全浏览列表。启动时,以及之后的周期中,ClientSideDetectionService会抓取最新的模型。这个模型会通过IPC发送给每个渲染进程,然后分配给与每个RenderView关联的PhishingClassifierDelegate。这允许了在渲染进程检查中完成分类。(渲染进程访问页面文本。) 52 | 53 | 54 | ![](csdservice.svg) 55 | 56 | ##资源请求流 57 | 58 | 这是一个处理请求的代码流的概览图。一些细节被隐藏以保证规模合理性。绿线意味着一种常见情况,加载非恶意页面的页面时,需要同步检查内存中安全浏览数据库。短划线表示异步调用。点状箭头表示对Google安全浏览器的请求。 59 | 60 | 安全浏览资源请求图 61 | 62 | ![](chrome_safe_browsing_wo_legend_wo_download.png) 63 | 64 | ##规范 65 | 66 | 安全浏览柱状图使用“SB2.”前缀。旧版本的柱状图使用“SB.”前缀。也有一些安全浏览用户规范(可以用“SB”前缀过滤),和一些浏览Rappor规范(前缀是“interstitial”)。 67 | 68 | ##安全浏览数据库 69 | SafeBrowsingService负责更新各种安全浏览使用的数据库。 70 | 71 | TODO(mattm): 提供更多关于数据库格式和更新过程的信息。 -------------------------------------------------------------------------------- /zh/General_Architecture/Sandbox_FAQ.md: -------------------------------------------------------------------------------- 1 | #沙箱FAQ 2 | ###什么是沙箱? 3 | 4 | 沙箱是一个允许沙箱进程创建的C++库,沙箱进程是一种运行在非常限制性的环境中的进程。沙箱进程可以唯一自由使用的资源是CPU周期和内存。例如,沙箱进程不能写磁盘或者显示他们自己的窗口。它们真正能做的事情由一种明确的策略锁控制。Chromium渲染器都是沙箱化进程。 5 | 6 | 7 | ###沙箱可以保护什么,不能保护什么? 8 | 9 | 沙箱限制了运行在沙箱中的代码的bug的危害。这些bug不能在用户的账号中安装持久性的恶意软件(因为写文件系统被禁止),这些bug也不能读取或者从用户的设备中盗取任何文件。 10 | 11 | (在Chromium中,渲染器进程是沙箱化的,它们处于这种保护中。Chromium插件还没有运行在沙箱中,因为许多插件的设计基于这样一个假设:它们对本地系统有着完全的访问权限。另外也要注意,Chromium渲染器进程与系统相隔离,但还未与网络相隔离。所以,基于域名的数据隔离还未提供)。 12 | 13 | 沙箱不能为系统组件(比如系统内核正在运行的组件)中的bug提供任何保护。 14 | 15 | 16 | ###沙箱像JVM? 17 | 18 | 恩,有点像...除了你必须为Java沙箱的优点重写代码以使用Java。在我们的沙箱中,你可以向你现有的C/C++应用程序添加沙箱。由于代码并非执行于虚拟机中,你可以得到原生的速度,以及对Windows API的直接访问。 19 | 20 | 21 | ###我需要安装驱动或者内核模块吗?用户需要有管理员身份吗? 22 | 23 | 不用。沙箱是一个纯用户模式库,任何用户可以运行沙箱化进程。 24 | 25 | ###如果没有虚拟机,你该怎样用C++实现沙箱? 26 | 27 | 我们为Windows安全模型划分等级。在Windows里,没有进行系统调用的话,代码不能执行任何形式的I/O(无论是磁盘,键盘,还是显示器)。在大多数系统调用里,Windows执行一些安全检查。沙箱会设置好环境,这样你不愿沙箱化进程执行的动作就会因安全检查而失败。在Chromium中,沙箱就是这样,因此所有访问检查都会失败。 28 | 29 | 30 | ###所以一个沙箱化进程(比如渲染器)是如何完成任务的? 31 | 32 | 某些交流通道会显式暴露给沙箱化进程;这些进程可以从这些通道进行读写。优先级更高的进程可以使用这些通道代表沙箱化进程执行一些动作。在Chromium中,优先级更高的进程通常是指浏览器进程。 33 | 34 | 35 | ###Vista没有类似的功能吗? 36 | 37 | 有的,它被成为信用等级(ILs)。沙箱检测Vista并使用信用等级。主要的不同在于沙箱在Windows XP下良好运行。我们知道的唯一使用信用等级的程序是IE7。换言之,沙箱库会帮你完成对新的Vista安全特性进行分级。 38 | 39 | 40 | ###这看起来很干净。我可以在自己的程序里使用沙箱吗? 41 | 42 | 可以。沙箱对Chromium浏览器没有任何重度依赖,它就是设计用于面向Internet的应用程序。主要的障碍在于你要把你的程序分成至少两个交互进程。一个进程具有比较高的优先级,执行I/O,与用户进行交互;另一个进程基本上没有什么优先权力,并执行不受信任的数据处理。 43 | 44 | 45 | ###需要做很多工作吗? 46 | 47 | 可能需要。但这是值得的,如果你的程序需要处理任意的不受信任的数据时更是如此。你的代码中可能有的任何缓冲溢出或者格式解码缺陷不会自动导致恶意代码对整台计算机造成危害。沙箱不是一个安全银弹,但对于那些恶意使用来说,沙箱是一道强大的最后屏障。 48 | 49 | 50 | ###我需要了解什么陷阱吗? 51 | 52 | 你首先需要记住,你只需要将你完全可控的代码或者完全理解的代码沙箱化。沙箱化第三方代码可能非常困难。例如,你可能不知道第三方代码需要创建临时文件或者弹出警告对话框;除非你显式允许,这些操作不会成功执行。更进一步,第三方组件可以用你预料之外的新形式更新最终用户的设备。 53 | 54 | 55 | ###COM, Winsock, 或DirectX在这里又如何? — 我可以使用它们吗? 56 | 57 | 在绝大多数情况下,不可以。我们不推荐在锁定前使用它们(但也只能在锁定前使用它们)。一旦一个沙箱化进程被锁定,使用Winsock,COM,或者DirectX不是会产生故障就是会彻底失败。 58 | 59 | 60 | ###在锁定前是什么意思?沙箱化进程不是从一开始就锁定了的吗? 61 | 62 | 不是,沙箱化进程并非从一开始就是处于保护之中。沙箱在进程调用LowerToken()后才开始生效。这允许进程启动时有一段时间沙箱化进程可以自由地管理关键资源,加载库,或者读取配置文件。进程需要在它开始与不受信任的数据交互前尽快调用LowerToken()。 63 | 64 | 注意:如果你的进程被恶意软件感染了,任何在调用LowerToken()后的仍然开放的操作系统句柄会被恶意软件滥用。所以我们不鼓励调用COM或者其他重量级API,它们会为了将来的调用效率遗留一些开放的句柄。 65 | 66 | 67 | ###所以你可以调用什么API? 68 | 69 | 并没有安全API的权威列表。通常,你应该结构化你的代码,这样沙箱化代码可以从管道或共享内存读写或者用其他方式操作数据。在Chromium中,整个WebKit代码都是用这种方式运行的,输出大部分是网页渲染后的位图。你可以将Chromium作为你自己的基于内存或基于管道的IPC的灵感来源。 70 | 71 | 72 | ###恶意软件不可以感染管道或共享内存另一端的处理吗? 73 | 74 | 是的,如果另一端有bug的话,它可以。关键在于,编写和分析一个正确的IPC机制比编写一个web浏览器引擎要简单得多。所以我们将IPC代码做得尽可能简单,并且交由另一端去review。 75 | -------------------------------------------------------------------------------- /zh/General_Architecture/HW_Video_Acceleration_in_Chrom{eium}{OS}.md: -------------------------------------------------------------------------------- 1 | #Chrom{e,ium}{,OS}中的硬件视频加速 2 | 3 | Ami Fischman <fischman@chromium.org> 4 | 5 | Status as of 2014/06/06: Up-to-date 6 | 7 | (可以得到更多的细节) 8 | 9 | ##介绍 10 | 11 | 视频解码(e.g. Youtube点播)和编码(e.g. 视频聊天应用)是现代网络中最复杂的计算操作之一。将这些操作从运行在通常目的的CPU移动到指定的硬件块意味着更低的电力消耗,更长的电池寿命,更高的质量(e.g. HD而非SD),更好的交互表现(因为CPU可以被其他需要做的事情占满)。 12 | 13 | ##设计 14 | 15 | [media::VideoDecodeAccelerator](https://code.google.com/p/chromium/codesearch#chromium/src/media/video/video_decode_accelerator.h&q=media::VideoDecodeAccelerator&sq=package:chromium&ct=rc&cd=1&l=21&dr=Ss) (VDA) 和 [media::VideoEncodeAccelerator](https://code.google.com/p/chromium/codesearch#chromium/src/media/video/video_encode_accelerator.h&l=23) (VEA) (有他们对应的客户端子类)是Chrome中所有视频硬件加速的中心接口。每个硬件加速的消费者实现相关的客户端接口,调用一个相关的V[DE]A对象。 16 | 17 | 通常这些类想要编码或解码存在于渲染器进程中的视频(e.g.<video>播放器,或者WebRTC的视频解编码器),被使用的硬件在渲染器进程内是不可访问的,所以[IPC](https://code.google.com/p/chromium/codesearch#chromium/src/content/common/gpu/gpu_messages.h&q=f:messages%5C.h%20acceleratedvideo&sq=package:chromium&type=cs&l=712)被用于连接渲染器<->GPU进程。 18 | 19 | ##实现细节 20 | 21 | 加速API的主要使用者是:<video>管道(在web上展示媒体信息),WebRTC(使得web上脱离插件的实时视频聊天变得可能),Pepper API(为pepper插件比如Adobe Flash提供硬件加速)。 22 | 23 | 实现硬件加速API与操作系统相关(有时候也与硬件平台相关),因为操作系统和驱动/硬件表示层提供了极度不同的各种选项。 24 | 25 | 26 | ![hwvideo](../hwvideo.png) 27 | (没有画出的部分: 过时的基于OpenMAX-IL的[OVDA](https://code.google.com/p/chromium/issues/detail?id=223194), 以及不会启动的[MacVDA](https://code.google.com/p/chromium/issues/detail?id=133828)). 28 | 29 | ##当前状态 30 | 新的设备层出不穷,所以这个列表很可能已经过时了,但在2014年六月上旬,已有的(公开)支持包括: 31 | 32 | **解码** 33 | - Windows: 从Windows 7开始, h.264的硬件加速解码被用于DXVAVDA. 34 | - CrOS/Intel (一切过去的Mario/Alex/ZGB): h.264的硬件加速解码被用于VAVDA 35 | - CrOS/ARM: V4L2VDA可以使用h.264和VP8的硬件加速解码 36 | - Android: 在N10, N5,和一些S4, 以及一些其他设备上, VP8的硬件加速解码可用。(注意在Android上这是用于WebRTC,因为没有PPAPI,并且<video>标签使用平台自己的播放器) 37 | 38 | **Encode** 39 | - CrOS/ARM: V4L2VEA可以使用h.264的硬件加速编码(任何地方),以及VP8(2014年的设备) 40 | - Android: N5上可以使用VP8硬件加速编码 41 | 42 | ##结果 43 | 一般来说,从CPU去掉编解码,转到指定的硬件上,根据平台/工作负载等的不同,可以延长电池10%-25%的寿命。一些数据例子可以在这里看: 44 | 45 | 公开: [133827#c27](http://crbug.com/133827#c27), [219957#c16](https://code.google.com/p/chromium/issues/detail?id=219957#c16) 46 | 47 | google内部: [summary slide deck](http://docs/presentation/d/1lhWy_gsAhDtnB5l3i2ND2rWhHgmgtV394WoVzlqevAE/edit#slide=id.g1c7d5a5cf_023), [CrOS/ARM-1](https://docs.google.com/a/google.com/spreadsheets/d/1tdAEvCVPKH6280EArYPHaE10HA0iFP0aypJGy4n26LM/edit#gid=0), [CrOS/ARM-2](http://docs/document/d/1fty8UzlwN0SzJlURfNbPysYZ1sj4VFaDpF0MV95HbNE/edit#) 48 | 49 | 50 | -------------------------------------------------------------------------------- /zh/General_Architecture/Plugin_Architecture.md: -------------------------------------------------------------------------------- 1 | #插件架构 2 | ##背景 3 | 在阅读这个文档前,你应当熟悉Chromium的多进程架构。 4 | 5 | ##概述 6 | 7 | 插件是浏览器不稳定的主要来源。插件也会在渲染器没有实际运行时,让进程沙箱化。因为进程是第三方编写的,我们无法控制他们对操作系统的访问。解决方案是,让插件在各自独立的进程中运行。 8 | 9 | 10 | ##设计细节 11 | 12 | ###进程内插件 13 | 14 | Chromium有着在进程内运行插件的能力(对测试来讲非常方便),也可以在进程外运行插件。它们都始于我们的非多进程WebKit嵌入层,期待嵌入层实现WebKit::WebPlugin接口。这实际由WebPluginImpl实现。WebPluginImpl在图中的虚线以上,与WebPluginDelegate接口交流,对进程内插件而言,这个接口由WebPluginDelegateImpl实现,它会接着与我们的NPAPI包装层通信。 15 | 16 | 17 | 18 | ![](../in_process_plugins.png) 19 | 20 | 历史经验:还没有WebKit嵌入层的时候,WebPluginImpl是对应的嵌入层。它会与“嵌入应用程序”通过WebPluginDelegate抽象接口交流,我们通过切换这个接口的实现,服务与进程内插件与进程外插件。在有了额外的Chromium WebKit API之后,我们增加了新的WebKit::WebPlugin抽象接口,它与旧的WebPluginDelegate接口有着相同的功能。这个接口的一个好一点的设计是,合并WebPluginImpl和WebPluginDelegateImpl,在WebKit::WebPlugin层做进程划分。由于这个问题的复杂性,现在还没有这样实现。 21 | 22 | 23 | ###进程外插件 24 | 25 | Chromium通过切换上面的图中,虚线以上几层的实现来支持跨进程插件。这干预了WebPluginImpl层和WebPluginDelegateImpl之间的IPC层,并让我们在每个模式之间共享我们所有的NPAPI代码。所有旧的WebPluginDelegateImpl代码,以及与它通信的NPAPI层,现在是在独立的插件进程中执行了。 26 | 27 | 渲染器/插件通信通道的两端分别由PluginChannel和PluginChannelHost代表。我们有许多渲染器进程,以及每个插件唯一的一个插件进程。这意味着渲染器中,对于每种它所使用的插件都持有一个PluginChannelHost对象(例如,Adobe Flash和Windows Media Player)。在每个插件进程中,每个渲染器进程会有一个PluginChannel,它们各自持有一个那种插件的实例。 28 | 29 | 接着,channel的每个端点,对应许多不同的插件实例。例如,如果网页中嵌有两个Adobe Flash视频,渲染器端就会有两个WebPluginDelegateProxies对象(以及相关的成员),插件端就会有两个WebPluginDelegateStubs(以及相关的成员)。channel用一个IPC连接管理这些对象直接复数的通信。 30 | 31 | 在这个图中,你可以看到上面的进程内图表的类(用灰色表示),以及中间彩色的新的进程外代码层。 32 | 33 | 34 | ![](../out_of_process_plugins.png) 35 | 36 | 37 | **历史经验**:我们曾经考虑使用一个stub(存根)/proxy(代理)模型进行通信,每个IPC通道的端点有一个stub和一个proxy,分别接收和发送消息给对应的插件。这会导致许多类变得迷乱。因此,WebPluginStub被合并到WebPluginDelegateProxy,现在它处理渲染器端与一个插件实例的所有IPC通信。插件端还没有合并,还剩两个类WebPluginDelegateStub和WebPluginProxy,概念上他们是相同的对象,只是代表了通信的不同方向。 38 | 39 | 40 | ###无窗口插件 41 | 42 | 无窗口插件设计用于在渲染器管道内直接运行。当WebKit想要在屏幕上绘制一个区域时,调用插件代码,将它作为一个绘制上下文处理。无窗口插件通常用在希望插件在网页上透明的情况 -- 这取决于插件绘制代码,以决定它如何导航给定的网页。 43 | 44 | 为了将无窗口插件抽出进程,你仍然需要在同步的WebKit渲染端合并他们的渲染。一个简单但低速的方法是切掉插件将要绘制的区域,然后同步地切到插件进程让它绘制。这可以由一些共享内存的方式来加速。 45 | 46 | 然而,渲染速度取决于插件进程(想象有着30个透明插件的页面,我们需要30轮插件进程的旅行)。所以,相反地,我们异步绘制无窗口插件,更像我们已有的页面是关于screen异步那样。渲染器有一个高效的回退存储,存储插件的渲染区域的图像,并使用这个图像来绘制,这样插件就可以异步发送新的代表更改渲染区域的更新。 47 | 48 | 所有的这些在透明插件上都有点复杂。这个插件进程需要知道它想要绘制的是哪些像素。所以它也要缓存渲染器最后发给它的东西,作为插件后面的页面背景,然后让插件反复地绘制这个区域。 49 | 50 | 因此,总的来说,无窗口插件绘制的区域会调用几个buffer。 51 | 52 | 渲染器进程 53 | - 回退存储插件最后绘制的东西 54 | - 插件的共享内存,以接收更新(“透明的DIB”) 55 | - 复制插件背后的页面背景(在下面有描述) 56 | 57 | 插件进程 58 | - 复制插件背后的页面背景,作为绘制时的源材料使用 59 | - 渲染器共享内存以发送更新(“透明的DIB”) 60 | 61 | 渲染器为什么要保存页面背景的副本呢?因为如果页面背景改变了,我们需要同步地让插件重新绘制新的即将出现的背景。我们可以通过比较新绘制的背景和我们的插件存储的背景副本来判断背景的改变。因为插件和渲染器进程相互之间是异步的,他们需要独立的副本。 62 | 63 | 64 | ###系统全貌 65 | 66 | 这个图片展示了整个系统,有浏览器和两个渲染进程,它们都与一个共享的进程外Flash进程交流。总共有三个插件实例。注意这个图表有一部分是过期的,WebPluginStub已经合并到WebPluginDelegateProxy中了。 67 | 68 | 69 | ![](../pluginsoutofprocess.png) -------------------------------------------------------------------------------- /en/OS-Specific/Android/Java_Resources_on_Android.md: -------------------------------------------------------------------------------- 1 | #Java Resources on Android 2 | ##Overview 3 | 4 | Chrome for Android uses certain resources in Java code (e.g. Android layouts and associated strings or images). These resources are stored according to Android's resource directory structure within a Java root folder. 5 | * content/public/android/java/res - Java resources available within content and anything that depends on content 6 | * chrome/android/java/res - Java resources available within chrome and anything that depends on chrome 7 | * ui/android/java/res - Java resources available within ui and anything that depends on ui 8 | 9 | Java code can reference these resources in the normal way using a generated R class, being sure to qualify it with the correct package name. 10 | ```java 11 | // Use a resource from content 12 | setImageResource(org.chromium.content.R.drawable.globe_favicon); 13 | 14 | // Use a resource from chrome 15 | setContentView(org.chromium.chrome.R.layout.month_picker); 16 | ``` 17 | ##How resources are packaged 18 | 19 | While compiling the Java code in content, an R.java file is generated based on the Java resources in content. This R.java contains non-final constants and is used only while compiling content (and any non-APK target that depends on content) but is not included in the content jar. 20 | 21 | When building an APK target, such as content_shell_apk, resources are merged from content, any other dependencies, and from content shell itself. These merged resources are processed and included in the APK. Based on these resources, a new R.java is generated with the correct resource -> ID mappings. This R.java is copied into the R packages needed by each dependency (e.g. org.chromium.content.R and org.chromium.content_shell.R), and all these copies are included in the APK. 22 | 23 | This process closely follows Android's handling of resources in library projects, where content and chrome are the "libraries", though we don't use the SDK to compile our "libraries". Hence some of the same caveats apply. In particular, two resources with the same ID cannot coexist. The resource highest in the dependency chain (e.g. in content shell) will override the others (e.g. in content). 24 | ##Supporting resources in gyp 25 | 26 | To add resources to another Java root folder, add the variables has_java_resources, R_package, and R_package_relpath to the gyp target that builds that Java code. For example: 27 | ```json 28 | { 29 | 'target_name': 'content_java', 30 | 'type': 'none', 31 | 'dependencies': [ ... ], 32 | 'variables': { 33 | 'package_name': 'content', 34 | 'java_in_dir': '../content/public/android/java', 35 | 36 | # Support Java resources in content 37 | 'has_java_resources': 1, 38 | 'R_package': 'org.chromium.content', 39 | 'R_package_relpath': 'org/chromium/content', 40 | }, 41 | 'includes': [ '../build/java.gypi' ], 42 | }, 43 | ``` -------------------------------------------------------------------------------- /en/General_Architecture/Multi-process_Resource_Loading.md: -------------------------------------------------------------------------------- 1 | #Multi-process Resource Loading(need update) 2 | 3 | ##Background 4 | 5 | All network communication is handled by the main browser process. This is done not only so that the browser process can control each renderer's access to the network, but also so that we can maintain consistent session state across processes like cookies and cached data. It is also important because as a HTTP/1.1 user-agent, the browser as a whole should not open too many connections per host. 6 | 7 | ##Overview 8 | 9 | Our multi-process application can be viewed in three layers. At the lowest layer is the WebKit library which renders pages. Above that are the renderer process (simplistically, one-per-tab), each of which contains one WebKit instance. Managing all the renderers is the browser process, which controls all network accesses. 10 | 11 |
12 | ![](../Resource-loading.png) 13 | 14 | 15 | ##Blink 16 | 17 | Blink has a ResourceLoader object which is responsible for fetching data. Each loader has a WebURLLoader for performing the actual requests. The header file for this interface is inside the Blink repo. 18 | 19 | ResourceLoader implements the interface WebURLLoaderClient. This is the callback interface used by the renderer to dispatch data and other events to Blink. 20 | 21 | The test shell uses a different resource loader, so provides a different implementation, non-IPC version of ResourceLoaderBridge, located in webkit/tools/test_shell/simple_resource_loader_bridge. 22 | 23 | ##Renderer 24 | 25 | The renderer's implementation of WebURLLoader, called WebURLLoaderImpl, is located in content/child/. It uses the global ResourceDispatcher singleton object (one for each renderer process) to create a unique request ID and forward the request to the browser via IPC. Responses from the browser will reference this request ID, which can then be converted back to the RequestPeer object (WebURLRequestImpl) by the resource dispatcher. 26 | 27 | ##Browser 28 | 29 | The RenderProcessHost objects inside the browser receive the IPC requests from each renderer. It forwards these requests to the global ResourceDispatcherHost, using a pointer to the render process host (specifically, an implementation of ResourceDispatcherHost::Receiver) and the request ID generated by the renderer to uniquely identify the request. 30 | 31 | Each request is then converted into a URLRequest object, which in turn forwards it to it's internal URLRequestJob that implements the specific protocol desired. When the URLRequest generates notifications, its ResourceDispatcherHost::Receiver and request ID are used to send the notification to the correct RenderProcessHost for sending back to the renderer. Since the ID generated by the renderer is preserved, it is able to correlate all responses with a specific request first generated by WebKit. 32 | 33 | ##Cookies 34 | 35 | All cookies are handled by our CookieMonster object in /net/base. We do not share cookies with WinInet. The cookie monster lives in the browser process which handles all network requests because cookies need to be the same across all tabs. 36 | 37 | Pages can request cookies for a document via document.cookie. When this occurs, we send a synchronous message from the renderer to the browser requesting the cookie. While the browser is processing the cookie, the thread that WebKit works on is suspended. When the renderer's I/O thread receives the response from the browser, it un-suspends the thread and passes the result back to the JavaScript engine. -------------------------------------------------------------------------------- /en/General_Architecture/HW_Video_Acceleration_in_Chrom{eium}{OS}.md: -------------------------------------------------------------------------------- 1 | #HW Video Acceleration in Chrom{e,ium}{,OS} 2 | 3 | Ami Fischman 4 | 5 | Status as of 2014/06/06: Up-to-date 6 | 7 | (could use some more details) 8 | 9 | ##Introduction 10 | 11 | Video decode (e.g. YouTube playback) and encode (e.g. video chat applications) are some of the most complex compute operations on the modern web. Moving these operations from software running on general-purpose CPUs to dedicated hardware blocks means lower power consumption, longer battery life, higher quality (e.g. HD instead of SD), and better interactive performance as the CPU is freed up to work on everything else it needs to do. 12 | 13 | ##Design 14 | 15 | [media::VideoDecodeAccelerator](https://code.google.com/p/chromium/codesearch#chromium/src/media/video/video_decode_accelerator.h&q=media::VideoDecodeAccelerator&sq=package:chromium&ct=rc&cd=1&l=21&dr=Ss) (VDA) and [media::VideoEncodeAccelerator](https://code.google.com/p/chromium/codesearch#chromium/src/media/video/video_encode_accelerator.h&l=23) (VEA) (with their respective Client subclasses) are the interfaces at the center of all video HW acceleration in Chrome. Each consumer of HW acceleration implements the relevant Client interface and calls an object of the relevant V[DE]A interface. 16 | 17 | In general the classes that want to encode or decode video live in the renderer process (e.g. the