chrome里面的about Scheme
对about Scheme进行处理的地方:
D:/project/chrome/src/src/chrome/browser/browser_url_handler.cc的void BrowserURLHandler::InitURLHandlers()函数
// static void BrowserURLHandler::InitURLHandlers() { if (!url_handlers_.empty()) return; // Visual Studio 2010 has problems converting NULL to the null pointer for // std::pair. See http://connect.microsoft.com/VisualStudio/feedback/details/520043/error-converting-from-null-to-a-pointer-type-in-std-pair // It will work if we pass nullptr. #if defined(_MSC_VER) && _MSC_VER >= 1600 URLHandler null_handler = nullptr; #else URLHandler null_handler = NULL; #endif // Add the default URL handlers. url_handlers_.push_back( HandlerPair(&ExtensionWebUI::HandleChromeURLOverride, null_handler)); // about: url_handlers_.push_back(HandlerPair(&WillHandleBrowserAboutURL, null_handler)); // chrome: & friends. url_handlers_.push_back(HandlerPair(&HandleWebUI, null_handler)); // view-source: url_handlers_.push_back(HandlerPair(&HandleViewSource, &ReverseViewSource)); }
D:/project/chrome/src/src/chrome/browser/browser_about_handler.cc 的bool WillHandleBrowserAboutURL(GURL* url, Profile* profile)
WillHandleBrowserAboutURL bool WillHandleBrowserAboutURL(GURL* url, Profile* profile) { // We only handle about: schemes. if (!url->SchemeIs(chrome::kAboutScheme)) return false; // about:blank is special. Frames are allowed to access about:blank, // but they are not allowed to access other types of about pages. // Just ignore the about:blank and let the TAB_CONTENTS_WEB handle it. if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutBlankURL)) return false; // Rewrite about:cache/* URLs to chrome://view-http-cache/* if (StartsWithAboutSpecifier(*url, chrome::kAboutCacheURL)) { *url = RemapAboutURL(chrome::kNetworkViewCacheURL, *url); return true; } #if defined(OS_WIN) // Rewrite about:conflicts/* URLs to chrome://conflicts/* if (StartsWithAboutSpecifier(*url, chrome::kAboutConflicts)) { *url = GURL(chrome::kChromeUIConflictsURL); return true; } #endif // Rewrite about:flags to chrome://flags/. if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutFlagsURL)) { *url = GURL(chrome::kChromeUIFlagsURL); return true; } // Rewrite about:net-internals/* URLs to chrome://net-internals/* if (StartsWithAboutSpecifier(*url, chrome::kAboutNetInternalsURL)) { *url = RemapAboutURL(chrome::kNetworkViewInternalsURL, *url); return true; } // Rewrite about:gpu/* URLs to chrome://gpu-internals/* if (StartsWithAboutSpecifier(*url, chrome::kAboutGpuURL)) { *url = RemapAboutURL(chrome::kGpuInternalsURL, *url); return true; } // Rewrite about:appcache-internals/* URLs to chrome://appcache/* if (StartsWithAboutSpecifier(*url, chrome::kAboutAppCacheInternalsURL)) { *url = RemapAboutURL(chrome::kAppCacheViewInternalsURL, *url); return true; } // Rewrite about:sync-internals/* URLs (and about:sync, too, for // legacy reasons) to chrome://sync-internals/* if (StartsWithAboutSpecifier(*url, chrome::kAboutSyncInternalsURL) || StartsWithAboutSpecifier(*url, chrome::kAboutSyncURL)) { *url = RemapAboutURL(chrome::kSyncViewInternalsURL, *url); return true; } // Rewrite about:plugins to chrome://plugins/. if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutPluginsURL)) { *url = GURL(chrome::kChromeUIPluginsURL); return true; } // Handle URL to crash the browser process. if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutBrowserCrash)) { // Induce an intentional crash in the browser process. int* bad_pointer = NULL; *bad_pointer = 42; return true; } // Handle URLs to wreck the gpu process. GpuProcessHostUIShim* gpu_ui_shim = GpuProcessHostUIShim::GetForRenderer(0); if (gpu_ui_shim) { if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutGpuCrashURL)) { gpu_ui_shim->SendAboutGpuCrash(); return true; } if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutGpuHangURL)) { gpu_ui_shim->SendAboutGpuHang(); return true; } } // There are a few about: URLs that we hand over to the renderer. If the // renderer wants them, don't do any rewriting. if (chrome_about_handler::WillHandle(*url)) return false; // Anything else requires our special handler; make sure it's initialized. InitializeAboutDataSource(profile); // Special case about:memory to go through a redirect before ending up on // the final page. See GetAboutMemoryRedirectResponse above for why. if (LowerCaseEqualsASCII(url->path(), kMemoryPath)) { *url = GURL("chrome://about/memory-redirect"); return true; } // Rewrite the about URL to use chrome:. WebKit treats all about URLS the // same (blank page), so if we want to display content, we need another // scheme. std::string about_url = "chrome://about/"; about_url.append(url->path()); *url = GURL(about_url); return true; }
这些about scheme的定义在D:/project/chrome/src/src/chrome/common/url_constants.cc :
url_constants.cc const char kAboutScheme[] = "about"; const char kBlobScheme[] = "blob"; const char kChromeDevToolsScheme[] = "chrome-devtools"; const char kChromeInternalScheme[] = "chrome-internal"; const char kChromeUIScheme[] = "chrome"; const char kDataScheme[] = "data"; const char kExtensionScheme[] = "chrome-extension"; const char kFileScheme[] = "file"; const char kFileSystemScheme[] = "filesystem"; const char kFtpScheme[] = "ftp"; const char kHttpScheme[] = "http"; const char kHttpsScheme[] = "https"; const char kJavaScriptScheme[] = "javascript"; const char kMailToScheme[] = "mailto"; const char kMetadataScheme[] = "metadata"; const char kUserScriptScheme[] = "chrome-user-script"; const char kViewSourceScheme[] = "view-source"; #if defined(OS_CHROMEOS) const char kCrosScheme[] = "cros"; #endif const char kStandardSchemeSeparator[] = "://"; const char* kSavableSchemes[] = { kHttpScheme, kHttpsScheme, kFileScheme, kFtpScheme, kExtensionScheme, kChromeDevToolsScheme, kChromeUIScheme, NULL }; const char kAboutAboutURL[] = "about:about"; const char kAboutAppCacheInternalsURL[] = "about:appcache-internals"; const char kAboutBlankURL[] = "about:blank"; const char kAboutCacheURL[] = "about:cache"; const char kAboutConflicts[] = "about:conflicts"; const char kAboutCrashURL[] = "about:crash"; const char kAboutKillURL[] = "about:kill"; const char kAboutCreditsURL[] = "about:credits"; const char kAboutDNSURL[] = "about:dns"; const char kAboutFlagsURL[] = "about:flags"; const char kAboutGpuURL[] = "about:gpu"; const char kAboutGpuCrashURL[] = "about:gpucrash"; const char kAboutGpuHangURL[] = "about:gpuhang"; const char kAboutHangURL[] = "about:hang"; const char kAboutHistogramsURL[] = "about:histograms"; const char kAboutMemoryURL[] = "about:memory"; const char kAboutNetInternalsURL[] = "about:net-internals"; const char kAboutPluginsURL[] = "about:plugins"; const char kAboutShorthangURL[] = "about:shorthang"; const char kAboutSyncURL[] = "about:sync"; const char kAboutSyncInternalsURL[] = "about:sync-internals"; const char kAboutTermsURL[] = "about:terms"; const char kAboutVersionURL[] = "about:version"; // Use an obfuscated URL to make this nondiscoverable, we only want this // to be used for testing. const char kAboutBrowserCrash[] = "about:inducebrowsercrashforrealz"; const char kChromeUIAboutAboutURL[] = "chrome://about/about"; const char kChromeUIAboutCreditsURL[] = "chrome://about/credits"; const char kChromeUIAboutURL[] = "chrome://settings/about"; const char kChromeUIAppLauncherURL[] = "chrome://newtab/#mode=app-launcher"; const char kChromeUIBookmarksURL[] = "chrome://bookmarks/"; const char kChromeUIBugReportURL[] = "chrome://bugreport/"; const char kChromeUIConflictsURL[] = "chrome://conflicts/"; const char kChromeUIConstrainedHTMLTestURL[] = "chrome://constrained-test/"; const char kChromeUICrashesURL[] = "chrome://crashes/"; const char kChromeUIDevToolsURL[] = "chrome-devtools://devtools/"; const char kChromeUIDownloadsURL[] = "chrome://downloads/"; const char kChromeUIExtensionIconURL[] = "chrome://extension-icon/"; const char kChromeUIExtensionsURL[] = "chrome://extensions/"; const char kChromeUIFavIconURL[] = "chrome://favicon/"; const char kChromeUIFlagsURL[] = "chrome://flags/"; const char kChromeUIHistory2URL[] = "chrome://history2/"; const char kChromeUIHistoryURL[] = "chrome://history/"; const char kChromeUIIPCURL[] = "chrome://about/ipc"; const char kChromeUIKeyboardURL[] = "chrome://keyboard/"; const char kChromeUINewTabURL[] = "chrome://newtab"; const char kChromeUIPluginsURL[] = "chrome://plugins/"; const char kChromeUIPrintURL[] = "chrome://print/"; const char kChromeUISettingsURL[] = "chrome://settings/"; const char kChromeUITextfieldsURL[] = "chrome://textfields/"; #if defined(OS_CHROMEOS) const char kChromeUIAboutOSCreditsURL[] = "chrome://about/os-credits"; const char kChromeUIActivationMessage[] = "chrome://activationmessage/"; const char kChromeUIFileBrowseURL[] = "chrome://filebrowse/"; const char kChromeUICollectedCookiesURL[] = "chrome://collected-cookies/"; const char kChromeUIImageBurnerURL[] = "chrome://imageburner/"; const char kChromeUIKeyboardOverlayURL[] = "chrome://keyboardoverlay/"; const char kChromeUIMediaplayerURL[] = "chrome://mediaplayer/"; const char kChromeUIMobileSetupURL[] = "chrome://mobilesetup/"; const char kChromeUIRegisterPageURL[] = "chrome://register/"; const char kChromeUISlideshowURL[] = "chrome://slideshow/"; const char kChromeUISystemInfoURL[] = "chrome://system/"; const char kChromeUIUserImageURL[] = "chrome://userimage/"; #endif // Keep this list sorted please. const char kChromeUIBookmarksHost[] = "bookmarks"; const char kChromeUIBugReportHost[] = "bugreport"; const char kChromeUIConflictsHost[] = "conflicts"; const char kChromeUICrashesHost[] = "crashes"; const char kChromeUIDevToolsHost[] = "devtools"; const char kChromeUIDialogHost[] = "dialog"; const char kChromeUIDownloadsHost[] = "downloads"; const char kChromeUIExtensionIconHost[] = "extension-icon"; const char kChromeUIExtensionsHost[] = "extensions"; const char kChromeUIFavIconHost[] = "favicon"; const char kChromeUIFlagsHost[] = "flags"; const char kChromeUIGpuInternalsHost[] = "gpu-internals"; const char kChromeUIHistoryHost[] = "history"; const char kChromeUIHistory2Host[] = "history2"; const char kChromeUIInspectorHost[] = "inspector"; const char kChromeUIKeyboardHost[] = "keyboard"; const char kChromeUINetInternalsHost[] = "net-internals"; const char kChromeUINewTabHost[] = "newtab"; const char kChromeUIPluginsHost[] = "plugins"; const char kChromeUIPrintHost[] = "print"; const char kChromeUIRemotingHost[] = "remoting"; const char kChromeUIRemotingResourcesHost[] = "remotingresources"; const char kChromeUIResourcesHost[] = "resources"; const char kChromeUIScreenshotPath[] = "screenshots"; const char kChromeUISettingsHost[] = "settings"; const char kChromeUISyncInternalsHost[] = "sync-internals"; const char kChromeUISyncResourcesHost[] = "syncresources"; const char kChromeUITextfieldsHost[] = "textfields"; const char kChromeUIThemePath[] = "theme"; const char kChromeUIThumbnailPath[] = "thumb"; #if defined(OS_CHROMEOS) const char kChromeUIActivationMessageHost[] = "activationmessage"; const char kChromeUICollectedCookiesHost[] = "collected-cookies"; const char kChromeUIFileBrowseHost[] = "filebrowse"; const char kChromeUIImageBurnerHost[] = "imageburner"; const char kChromeUIKeyboardOverlayHost[] = "keyboardoverlay"; const char kChromeUIMediaplayerHost[] = "mediaplayer"; const char kChromeUIMobileSetupHost[] = "mobilesetup"; const char kChromeUIRegisterPageHost[] = "register"; const char kChromeUISlideshowHost[] = "slideshow"; const char kChromeUISystemInfoHost[] = "system"; const char kChromeUIMenu[] = "menu"; const char kChromeUIWrenchMenu[] = "wrench-menu"; const char kChromeUINetworkMenu[] = "network-menu"; const char kChromeUIUserImageHost[] = "userimage"; #endif #if defined(OS_CHROMEOS) && defined(TOUCH_UI) const char kChromeUILoginContainerHost[] = "login-container"; const char kChromeUILoginHost[] = "login"; #endif const char kUnreachableWebDataURL[] = "chrome://chromewebdata/"; const char kAppCacheViewInternalsURL[] = "chrome://appcache-internals/"; const char kBlobViewInternalsURL[] = "chrome://blob-internals/"; const char kCloudPrintResourcesURL[] = "chrome://cloudprintresources/"; const char kCloudPrintResourcesHost[] = "cloudprintresources"; const char kCloudPrintSetupHost[] = "cloudprintsetup"; const char kNetworkViewInternalsURL[] = "chrome://net-internals/"; const char kNetworkViewCacheURL[] = "chrome://view-http-cache/"; const char kSyncViewInternalsURL[] = "chrome://sync-internals/"; // GPU sub pages const char kGpuInternalsURL[] = "chrome://gpu-internals/"; // Option sub pages. const char kAdvancedOptionsSubPage[] = "advanced"; const char kAutoFillSubPage[] = "autofill"; const char kBrowserOptionsSubPage[] = "browser"; const char kClearBrowserDataSubPage[] = "clearBrowserData"; const char kContentSettingsSubPage[] = "content"; const char kContentSettingsExceptionsSubPage[] = "contentExceptions"; const char kDefaultOptionsSubPage[] = ""; const char kImportDataSubPage[] = "importData"; const char kInstantConfirmPage[] = "instantConfirm"; const char kLanguageOptionsSubPage[] = "languages"; const char kPersonalOptionsSubPage[] = "personal"; const char kPasswordManagerSubPage[] = "passwords"; const char kSearchEnginesSubPage[] = "searchEngines"; #if defined(OS_CHROMEOS) const char kInternetOptionsSubPage[] = "internet"; const char kSystemOptionsSubPage[] = "system"; #endif const char kChromeHelpURL[] = #if defined(OS_CHROMEOS) "http://www.google.com/support/chromeos/"; #else "http://www.google.com/support/chrome/"; #endif const char kPageInfoHelpCenterURL[] = #if defined(OS_CHROMEOS) "http://www.google.com/support/chromeos/bin/answer.py?answer=95617"; #else "http://www.google.com/support/chrome/bin/answer.py?answer=95617"; #endif const char kCrashReasonURL[] = #if defined(OS_CHROMEOS) "http://www.google.com/support/chromeos/bin/answer.py?answer=1047340"; #else "http://www.google.com/support/chrome/bin/answer.py?answer=95669"; #endif // TODO: These are currently placeholders that point to the crash // docs. See bug http://crosbug.com/10711 const char kKillReasonURL[] = #if defined(OS_CHROMEOS) "http://www.google.com/support/chromeos/bin/answer.py?answer=1047340"; #else "http://www.google.com/support/chrome/bin/answer.py?answer=95669"; #endif const char kPrivacyLearnMoreURL[] = #if defined(OS_CHROMEOS) "http://www.google.com/support/chromeos/bin/answer.py?answer=1047334"; #else "http://www.google.com/support/chrome/bin/answer.py?answer=114836"; #endif const char kChromiumProjectURL[] = "http://code.google.com/chromium/"; const char kLearnMoreReportingURL[] = "http://www.google.com/support/chrome/bin/answer.py?answer=96817"; const char kOutdatedPluginLearnMoreURL[] = "http://www.google.com/support/chrome/bin/answer.py?answer=1181003";
相关推荐
语言:中文 (简体) scheme 生成、分析、转换,暂时仅支持支付宝小程序 支持 小程序 scheme 生成、分析、转换,目前支持 支付宝小程序
抓取scheme协议.js
抖音快手URL Scheme 里面包含了抖音快手,进入直播间,进入用户,hone,等 手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app...
Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。 服务器可以定制化跳转app页面 app可以通过Scheme跳转到另一个app页面 可以通过h5页面跳转app原生页面
scheme方式实现唤醒外部app 支持webview,浏览器链接地址 支持app唤醒目标app
Scheme 编程语言第三版概述 Scheme 编程语言是一种功能强大且灵活的编程语言,自 1975 年以来不断演进和发展。下面将对 Scheme 编程语言的基本概念、语法、特性和应用进行详细的介绍。 Scheme 基本概念 Scheme ...
文档的内容为 快手应用的一些 scheme跳转信息,我们可以在自己的应用内部直接唤起快手的指定界面,无论是从H5还是原生界面,包括直接跳转到某用户的主页,直接与某用户发起对话等
scheme源代码scheme 阴阳题源代码
scheme语言相关的学习资料: guide_racket_scheme.pdf Lisp之根源.pdf Racket图文教程.pdf scheme-primer.pdf schem-r5rs_cn.pdf The_Little_Schemer.pdf 通过Scheme看函数式编程.pdf Write_Yourself_a_Scheme_in_48...
Chrome 插件开发入门教程 Chrome 插件开发入门教程旨在帮助开发者快速了解 Chrome 插件的开发流程和基本概念。下面是本教程的知识点总结: 1. Chrome 插件开发的基本概念 Chrome 插件是一个小型的程序,可以增强...
This thoroughly updated edition of The Scheme Programming Language provides an introduction to Scheme and a definitive reference for standard Scheme, presented in a clear and concise manner....
使用shceme跳转支付宝指定页面,从支付宝APK提取出来,key的数字就是scheme的said,自行替换即可,json里有部分是之前的支付宝的活动页面,跳转了会提示已暂停服务 //扫一扫 alipayqr://platformapi/startapp?saId=...
Scheme学习资料
Scheme是LISP的一个重要变种,这个是它在Windows环境下的一个安装程序。愿与对LISP感兴趣的朋友共享。
支持scheme语法包括lambda define cond set!等
The scheme programming language 4th 关于Scheme语言的书,值得一看
scheme-lib scheme-lib 是一个scheme使用的库。目前支持android,其它平台在规划中。
Programming in Scheme provides an accessible introduction to Scheme that assumes no previous programming experience and covers all the basics of the language and many advanced topics as well....
An Efficient Flash Translation Layer Scheme for Flash Memory