diff options
Diffstat (limited to 'chrome_frame/utils.cc')
-rw-r--r-- | chrome_frame/utils.cc | 112 |
1 files changed, 110 insertions, 2 deletions
diff --git a/chrome_frame/utils.cc b/chrome_frame/utils.cc index 8647d86..b375dcc 100644 --- a/chrome_frame/utils.cc +++ b/chrome_frame/utils.cc @@ -1078,8 +1078,116 @@ ProtocolPatchMethod GetPatchMethod() { return patch_method; } -bool MonikerPatchEnabled() { +bool IsIBrowserServicePatchEnabled() { ProtocolPatchMethod patch_method = GetPatchMethod(); - return patch_method == PATCH_METHOD_MONIKER; + return patch_method == PATCH_METHOD_IBROWSER; } +std::string BindStatus2Str(ULONG bind_status) { + std::string s; + static const char* const bindstatus_txt[] = { + "BINDSTATUS_FINDINGRESOURCE", + "BINDSTATUS_CONNECTING", + "BINDSTATUS_REDIRECTING", + "BINDSTATUS_BEGINDOWNLOADDATA", + "BINDSTATUS_DOWNLOADINGDATA", + "BINDSTATUS_ENDDOWNLOADDATA", + "BINDSTATUS_BEGINDOWNLOADCOMPONENTS", + "BINDSTATUS_INSTALLINGCOMPONENTS", + "BINDSTATUS_ENDDOWNLOADCOMPONENTS", + "BINDSTATUS_USINGCACHEDCOPY", + "BINDSTATUS_SENDINGREQUEST", + "BINDSTATUS_CLASSIDAVAILABLE", + "BINDSTATUS_MIMETYPEAVAILABLE", + "BINDSTATUS_CACHEFILENAMEAVAILABLE", + "BINDSTATUS_BEGINSYNCOPERATION", + "BINDSTATUS_ENDSYNCOPERATION", + "BINDSTATUS_BEGINUPLOADDATA", + "BINDSTATUS_UPLOADINGDATA", + "BINDSTATUS_ENDUPLOADINGDATA", + "BINDSTATUS_PROTOCOLCLASSID", + "BINDSTATUS_ENCODING", + "BINDSTATUS_VERFIEDMIMETYPEAVAILABLE", + "BINDSTATUS_CLASSINSTALLLOCATION", + "BINDSTATUS_DECODING", + "BINDSTATUS_LOADINGMIMEHANDLER", + "BINDSTATUS_CONTENTDISPOSITIONATTACH", + "BINDSTATUS_FILTERREPORTMIMETYPE", + "BINDSTATUS_CLSIDCANINSTANTIATE", + "BINDSTATUS_IUNKNOWNAVAILABLE", + "BINDSTATUS_DIRECTBIND", + "BINDSTATUS_RAWMIMETYPE", + "BINDSTATUS_PROXYDETECTING", + "BINDSTATUS_ACCEPTRANGES", + "BINDSTATUS_COOKIE_SENT", + "BINDSTATUS_COMPACT_POLICY_RECEIVED", + "BINDSTATUS_COOKIE_SUPPRESSED", + "BINDSTATUS_COOKIE_STATE_UNKNOWN", + "BINDSTATUS_COOKIE_STATE_ACCEPT", + "BINDSTATUS_COOKIE_STATE_REJECT", + "BINDSTATUS_COOKIE_STATE_PROMPT", + "BINDSTATUS_COOKIE_STATE_LEASH", + "BINDSTATUS_COOKIE_STATE_DOWNGRADE", + "BINDSTATUS_POLICY_HREF", + "BINDSTATUS_P3P_HEADER", + "BINDSTATUS_SESSION_COOKIE_RECEIVED", + "BINDSTATUS_PERSISTENT_COOKIE_RECEIVED", + "BINDSTATUS_SESSION_COOKIES_ALLOWED", + "BINDSTATUS_CACHECONTROL", + "BINDSTATUS_CONTENTDISPOSITIONFILENAME", + "BINDSTATUS_MIMETEXTPLAINMISMATCH", + "BINDSTATUS_PUBLISHERAVAILABLE", + "BINDSTATUS_DISPLAYNAMEAVAILABLE", + "BINDSTATUS_SSLUX_NAVBLOCKED", + "BINDSTATUS_SERVER_MIMETYPEAVAILABLE", + "BINDSTATUS_SNIFFED_CLASSIDAVAILABLE", + "BINDSTATUS_64BIT_PROGRESS" + }; + if (bind_status >= 1 && bind_status <= BINDSTATUS_64BIT_PROGRESS) + s = bindstatus_txt[bind_status - 1]; + else + s = StringPrintf("UnDoc[%#x]", bind_status); + return s; +} + +std::string PiFlags2Str(DWORD flags) { +#define ADD_PI_FLAG(x) if (flags & x) { s.append(#x ## " "); flags &= ~x; } + std::string s = " flags "; + ADD_PI_FLAG(PI_PARSE_URL); + ADD_PI_FLAG(PI_FILTER_MODE); + ADD_PI_FLAG(PI_FORCE_ASYNC); + ADD_PI_FLAG(PI_USE_WORKERTHREAD); + ADD_PI_FLAG(PI_MIMEVERIFICATION); + ADD_PI_FLAG(PI_CLSIDLOOKUP); + ADD_PI_FLAG(PI_DATAPROGRESS); + ADD_PI_FLAG(PI_SYNCHRONOUS); + ADD_PI_FLAG(PI_APARTMENTTHREADED); + ADD_PI_FLAG(PI_CLASSINSTALL); + ADD_PI_FLAG(PI_PASSONBINDCTX); + ADD_PI_FLAG(PI_NOMIMEHANDLER); + ADD_PI_FLAG(PI_LOADAPPDIRECT); + ADD_PI_FLAG(PD_FORCE_SWITCH); + ADD_PI_FLAG(PI_PREFERDEFAULTHANDLER); + + if (flags) + s += StringPrintf("+UnDoc[%#x]", flags); + return s; +#undef ADD_PI_FLAG +} + +std::string Bscf2Str(DWORD flags) { +#define ADD_BSCF_FLAG(x) if (flags & x) { s.append(#x ## " "); flags &= ~x; } + std::string s = " flags "; + ADD_BSCF_FLAG(BSCF_FIRSTDATANOTIFICATION) + ADD_BSCF_FLAG(BSCF_INTERMEDIATEDATANOTIFICATION) + ADD_BSCF_FLAG(BSCF_LASTDATANOTIFICATION) + ADD_BSCF_FLAG(BSCF_DATAFULLYAVAILABLE) + ADD_BSCF_FLAG(BSCF_AVAILABLEDATASIZEUNKNOWN) + ADD_BSCF_FLAG(BSCF_SKIPDRAINDATAFORFILEURLS) + ADD_BSCF_FLAG(BSCF_64BITLENGTHDOWNLOAD) + + if (flags) + s += StringPrintf("+UnDoc[%#x]", flags); + return s; +#undef ADD_BSCF_FLAG +} |