ReactOS 0.4.17-dev-573-g8315b8c
internet.c File Reference
#include "urlmon_main.h"
#include "winreg.h"
#include "shlwapi.h"
#include "wine/debug.h"
Include dependency graph for internet.c:

Go to the source code of this file.

Classes

struct  feature_control
 

Typedefs

typedef struct feature_control feature_control
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (urlmon)
 
static HRESULT parse_schema (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_canonicalize_url (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_security_url (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_encode (LPCWSTR url, PARSEACTION action, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_path_from_url (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_security_domain (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_domain (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
static HRESULT parse_rootdocument (LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 
HRESULT WINAPI CoInternetParseUrl (LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
 
HRESULT WINAPI CoInternetCombineUrl (LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
 
HRESULT WINAPI CoInternetCompareUrl (LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCompareFlags)
 
HRESULT WINAPI CoInternetQueryInfo (LPCWSTR pwzUrl, QUERYOPTION QueryOption, DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, DWORD dwReserved)
 
static void set_feature_on_process (INTERNETFEATURELIST feature, BOOL enable)
 
static HRESULT set_internet_feature (INTERNETFEATURELIST feature, DWORD flags, BOOL enable)
 
static BOOL get_feature_from_reg (HKEY feature_control, LPCWSTR feature_name, LPCWSTR process_name, BOOL *enabled)
 
static HRESULT load_process_feature (INTERNETFEATURELIST feature)
 
static HRESULT get_feature_from_process (INTERNETFEATURELIST feature)
 
static HRESULT get_internet_feature (INTERNETFEATURELIST feature, DWORD flags)
 
HRESULT WINAPI CoInternetSetFeatureEnabled (INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, BOOL fEnable)
 
HRESULT WINAPI CoInternetIsFeatureEnabled (INTERNETFEATURELIST FeatureEntry, DWORD dwFlags)
 
HRESULT WINAPI CoInternetIsFeatureEnabledForUrl (INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL, IInternetSecurityManager *pSecMgr)
 
HRESULT WINAPI CoInternetIsFeatureZoneElevationEnabled (LPCWSTR szFromURL, LPCWSTR szToURL, IInternetSecurityManager *pSecMgr, DWORD dwFlags)
 

Variables

static const WCHAR feature_control_keyW []
 
static CRITICAL_SECTION process_features_cs = { &process_features_cs_dbg, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG process_features_cs_dbg
 
static feature_control process_feature_controls [FEATURE_ENTRY_COUNT]
 

Typedef Documentation

◆ feature_control

Function Documentation

◆ CoInternetCombineUrl()

HRESULT WINAPI CoInternetCombineUrl ( LPCWSTR  pwzBaseUrl,
LPCWSTR  pwzRelativeUrl,
DWORD  dwCombineFlags,
LPWSTR  pwzResult,
DWORD  cchResult,
DWORD pcchResult,
DWORD  dwReserved 
)

Definition at line 359 of file internet.c.

362{
364 DWORD size = cchResult;
366
367 TRACE("(%s,%s,0x%08lx,%p,%ld,%p,%ld)\n", debugstr_w(pwzBaseUrl),
368 debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult, pcchResult,
369 dwReserved);
370
371 protocol_info = get_protocol_info(pwzBaseUrl);
372
373 if(protocol_info) {
374 hres = IInternetProtocolInfo_CombineUrl(protocol_info, pwzBaseUrl, pwzRelativeUrl,
375 dwCombineFlags, pwzResult, cchResult, pcchResult, dwReserved);
376 IInternetProtocolInfo_Release(protocol_info);
377 if(SUCCEEDED(hres))
378 return hres;
379 }
380
381
382 hres = UrlCombineW(pwzBaseUrl, pwzRelativeUrl, pwzResult, &size, dwCombineFlags);
383
384 if(pcchResult)
385 *pcchResult = size;
386
387 return hres;
388}
HRESULT WINAPI UrlCombineW(const WCHAR *baseW, const WCHAR *relativeW, WCHAR *combined, DWORD *combined_len, DWORD flags)
Definition: path.c:4948
IInternetProtocolInfo * get_protocol_info(LPCWSTR url)
Definition: session.c:173
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define debugstr_w
Definition: kernel32.h:32
HRESULT hres
Definition: protocol.c:465
static IInternetProtocolInfo protocol_info
Definition: misc.c:929
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
#define TRACE(s)
Definition: solgame.cpp:4

◆ CoInternetCompareUrl()

HRESULT WINAPI CoInternetCompareUrl ( LPCWSTR  pwzUrl1,
LPCWSTR  pwzUrl2,
DWORD  dwCompareFlags 
)

Definition at line 393 of file internet.c.

394{
397
398 TRACE("(%s,%s,%08lx)\n", debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags);
399
401
402 if(protocol_info) {
403 hres = IInternetProtocolInfo_CompareUrl(protocol_info, pwzUrl1, pwzUrl2, dwCompareFlags);
404 IInternetProtocolInfo_Release(protocol_info);
405 if(SUCCEEDED(hres))
406 return hres;
407 }
408
409 return UrlCompareW(pwzUrl1, pwzUrl2, dwCompareFlags) ? S_FALSE : S_OK;
410}
INT WINAPI UrlCompareW(const WCHAR *url1, const WCHAR *url2, BOOL ignore_slash)
Definition: path.c:4430
#define S_OK
Definition: intsafe.h:52
#define S_FALSE
Definition: winerror.h:3451

◆ CoInternetIsFeatureEnabled()

HRESULT WINAPI CoInternetIsFeatureEnabled ( INTERNETFEATURELIST  FeatureEntry,
DWORD  dwFlags 
)

Definition at line 616 of file internet.c.

617{
618 TRACE("(%d, %08lx)\n", FeatureEntry, dwFlags);
619 return get_internet_feature(FeatureEntry, dwFlags);
620}
static HRESULT get_internet_feature(INTERNETFEATURELIST feature, DWORD flags)
Definition: internet.c:587
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

Referenced by CoInternetIsFeatureEnabledForUrl(), and CoInternetIsFeatureZoneElevationEnabled().

◆ CoInternetIsFeatureEnabledForUrl()

HRESULT WINAPI CoInternetIsFeatureEnabledForUrl ( INTERNETFEATURELIST  FeatureEntry,
DWORD  dwFlags,
LPCWSTR  szURL,
IInternetSecurityManager pSecMgr 
)

Definition at line 625 of file internet.c.

627{
628 DWORD urlaction = 0;
630
631 TRACE("(%d %08lx %s %p)\n", FeatureEntry, dwFlags, debugstr_w(szURL), pSecMgr);
632
633 if(FeatureEntry == FEATURE_MIME_SNIFFING)
634 urlaction = URLACTION_FEATURE_MIME_SNIFFING;
635 else if(FeatureEntry == FEATURE_WINDOW_RESTRICTIONS)
636 urlaction = URLACTION_FEATURE_WINDOW_RESTRICTIONS;
637 else if(FeatureEntry == FEATURE_ZONE_ELEVATION)
638 urlaction = URLACTION_FEATURE_ZONE_ELEVATION;
639
640 if(!szURL || !urlaction || !pSecMgr)
641 return CoInternetIsFeatureEnabled(FeatureEntry, dwFlags);
642
643 switch(dwFlags) {
644 case GET_FEATURE_FROM_THREAD:
645 case GET_FEATURE_FROM_THREAD_LOCALMACHINE:
646 case GET_FEATURE_FROM_THREAD_INTRANET:
647 case GET_FEATURE_FROM_THREAD_TRUSTED:
648 case GET_FEATURE_FROM_THREAD_INTERNET:
649 case GET_FEATURE_FROM_THREAD_RESTRICTED:
650 FIXME("unsupported flags %lx\n", dwFlags);
651 return E_NOTIMPL;
652
653 case GET_FEATURE_FROM_PROCESS:
654 hres = CoInternetIsFeatureEnabled(FeatureEntry, dwFlags);
655 if(hres != S_OK)
656 return hres;
657 /* fall through */
658
659 default: {
660 DWORD policy = URLPOLICY_DISALLOW;
661
662 hres = IInternetSecurityManager_ProcessUrlAction(pSecMgr, szURL, urlaction,
663 (BYTE*)&policy, sizeof(DWORD), NULL, 0, PUAF_NOUI, 0);
664 if(hres!=S_OK || policy!=URLPOLICY_ALLOW)
665 return S_OK;
666 return S_FALSE;
667 }
668 }
669}
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
Definition: appmodel.h:78
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
HRESULT WINAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags)
Definition: internet.c:616
unsigned char BYTE
Definition: xxhash.c:193

◆ CoInternetIsFeatureZoneElevationEnabled()

HRESULT WINAPI CoInternetIsFeatureZoneElevationEnabled ( LPCWSTR  szFromURL,
LPCWSTR  szToURL,
IInternetSecurityManager pSecMgr,
DWORD  dwFlags 
)

Definition at line 674 of file internet.c.

676{
678
679 TRACE("(%s %s %p %lx)\n", debugstr_w(szFromURL), debugstr_w(szToURL), pSecMgr, dwFlags);
680
681 if(!pSecMgr || !szToURL)
683
684 switch(dwFlags) {
685 case GET_FEATURE_FROM_THREAD:
686 case GET_FEATURE_FROM_THREAD_LOCALMACHINE:
687 case GET_FEATURE_FROM_THREAD_INTRANET:
688 case GET_FEATURE_FROM_THREAD_TRUSTED:
689 case GET_FEATURE_FROM_THREAD_INTERNET:
690 case GET_FEATURE_FROM_THREAD_RESTRICTED:
691 FIXME("unsupported flags %lx\n", dwFlags);
692 return E_NOTIMPL;
693
694 case GET_FEATURE_FROM_PROCESS:
696 if(hres != S_OK)
697 return hres;
698 /* fall through */
699
700 default: {
701 DWORD policy = URLPOLICY_DISALLOW;
702
703 hres = IInternetSecurityManager_ProcessUrlAction(pSecMgr, szToURL,
704 URLACTION_FEATURE_ZONE_ELEVATION, (BYTE*)&policy, sizeof(DWORD),
705 NULL, 0, PUAF_NOUI, 0);
706 if(FAILED(hres))
707 return S_OK;
708
709 switch(policy) {
710 case URLPOLICY_ALLOW:
711 return S_FALSE;
712 case URLPOLICY_QUERY:
713 FIXME("Ask user dialog not implemented\n");
714 default:
715 return S_OK;
716 }
717 }
718 }
719}
#define FAILED(hr)
Definition: intsafe.h:51

◆ CoInternetParseUrl()

HRESULT WINAPI CoInternetParseUrl ( LPCWSTR  pwzUrl,
PARSEACTION  ParseAction,
DWORD  dwFlags,
LPWSTR  pszResult,
DWORD  cchResult,
DWORD pcchResult,
DWORD  dwReserved 
)

Definition at line 325 of file internet.c.

327{
328 if(dwReserved)
329 WARN("dwReserved = %ld\n", dwReserved);
330
331 switch(ParseAction) {
332 case PARSE_CANONICALIZE:
333 return parse_canonicalize_url(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
334 case PARSE_SECURITY_URL:
335 return parse_security_url(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
336 case PARSE_ENCODE:
337 case PARSE_UNESCAPE:
338 return parse_encode(pwzUrl, ParseAction, dwFlags, pszResult, cchResult, pcchResult);
339 case PARSE_PATH_FROM_URL:
340 return parse_path_from_url(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
341 case PARSE_SCHEMA:
342 return parse_schema(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
343 case PARSE_SECURITY_DOMAIN:
344 return parse_security_domain(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
345 case PARSE_DOMAIN:
346 return parse_domain(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
347 case PARSE_ROOTDOCUMENT:
348 return parse_rootdocument(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
349 default:
350 FIXME("not supported action %d\n", ParseAction);
351 }
352
353 return E_NOTIMPL;
354}
#define WARN(fmt,...)
Definition: precomp.h:61
static HRESULT parse_canonicalize_url(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:109
static HRESULT parse_encode(LPCWSTR url, PARSEACTION action, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:154
static HRESULT parse_security_domain(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:207
static HRESULT parse_rootdocument(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:258
static HRESULT parse_schema(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:82
static HRESULT parse_domain(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:228
static HRESULT parse_path_from_url(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:181
static HRESULT parse_security_url(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
Definition: internet.c:135

Referenced by get_protocol_info(), is_registered_protocol(), OleLoadPicturePath(), ResProtocol_Start(), try_application_url(), and UniformResourceLocatorW_InvokeCommand().

◆ CoInternetQueryInfo()

HRESULT WINAPI CoInternetQueryInfo ( LPCWSTR  pwzUrl,
QUERYOPTION  QueryOption,
DWORD  dwQueryFlags,
LPVOID  pvBuffer,
DWORD  cbBuffer,
DWORD pcbBuffer,
DWORD  dwReserved 
)

Definition at line 418 of file internet.c.

421{
424
425 TRACE("(%s, %x, %lx, %p, %lx, %p, %lx)\n", debugstr_w(pwzUrl),
426 QueryOption, dwQueryFlags, pvBuffer, cbBuffer, pcbBuffer, dwReserved);
427
429
430 if(protocol_info) {
431 hres = IInternetProtocolInfo_QueryInfo(protocol_info, pwzUrl, QueryOption, dwQueryFlags,
432 pvBuffer, cbBuffer, pcbBuffer, dwReserved);
433 IInternetProtocolInfo_Release(protocol_info);
434
435 return SUCCEEDED(hres) ? hres : E_FAIL;
436 }
437
438 switch(QueryOption) {
439 case QUERY_USES_NETWORK:
440 if(!pvBuffer || cbBuffer < sizeof(DWORD))
441 return E_FAIL;
442
443 *(DWORD*)pvBuffer = 0;
444 if(pcbBuffer)
445 *pcbBuffer = sizeof(DWORD);
446 break;
447
448 default:
449 FIXME("Not supported option %d\n", QueryOption);
450 return E_NOTIMPL;
451 }
452
453 return S_OK;
454}
#define E_FAIL
Definition: ddrawi.h:102
#define DWORD
Definition: nt_native.h:44

◆ CoInternetSetFeatureEnabled()

HRESULT WINAPI CoInternetSetFeatureEnabled ( INTERNETFEATURELIST  FeatureEntry,
DWORD  dwFlags,
BOOL  fEnable 
)

Definition at line 607 of file internet.c.

608{
609 TRACE("(%d, %08lx, %x)\n", FeatureEntry, dwFlags, fEnable);
610 return set_internet_feature(FeatureEntry, dwFlags, fEnable);
611}
static HRESULT set_internet_feature(INTERNETFEATURELIST feature, DWORD flags, BOOL enable)
Definition: internet.c:466

◆ get_feature_from_process()

static HRESULT get_feature_from_process ( INTERNETFEATURELIST  feature)
static

Definition at line 568 of file internet.c.

569{
570 HRESULT hres = S_OK;
571
573
574 /* Try loading the feature from the registry, if it hasn't already
575 * been done.
576 */
577 if(process_feature_controls[feature].check_registry)
579 if(SUCCEEDED(hres))
581
583
584 return hres;
585}
static HRESULT load_process_feature(INTERNETFEATURELIST feature)
Definition: internet.c:513
static feature_control process_feature_controls[FEATURE_ENTRY_COUNT]
Definition: internet.c:51
static CRITICAL_SECTION process_features_cs
Definition: internet.c:31
INTERNETFEATURELIST feature
Definition: misc.c:1807
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by get_internet_feature().

◆ get_feature_from_reg()

static BOOL get_feature_from_reg ( HKEY  feature_control,
LPCWSTR  feature_name,
LPCWSTR  process_name,
BOOL enabled 
)
static

Definition at line 482 of file internet.c.

483{
486 DWORD res;
487
488 res = RegOpenKeyW(feature_control, feature_name, &feature);
489 if(res != ERROR_SUCCESS)
490 return FALSE;
491
492 size = sizeof(DWORD);
493 res = RegQueryValueExW(feature, process_name, NULL, &type, (BYTE*)&value, &size);
494 if(res != ERROR_SUCCESS || type != REG_DWORD) {
495 size = sizeof(DWORD);
497 }
498
500 if(res != ERROR_SUCCESS)
501 return FALSE;
502
503 if(type != REG_DWORD) {
504 WARN("Unexpected registry value type %ld (expected REG_DWORD) for %s\n", type, debugstr_w(L"*"));
505 return FALSE;
506 }
507
508 *enabled = value == 1;
509 return TRUE;
510}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define L(x)
Definition: resources.c:13
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glext.h:7750
GLuint res
Definition: glext.h:9613
#define REG_DWORD
Definition: sdbapi.c:615
Definition: pdh_main.c:96

Referenced by load_process_feature().

◆ get_internet_feature()

static HRESULT get_internet_feature ( INTERNETFEATURELIST  feature,
DWORD  flags 
)
static

Definition at line 587 of file internet.c.

588{
590
591 if(feature >= FEATURE_ENTRY_COUNT)
592 return E_FAIL;
593
594 if(flags == GET_FEATURE_FROM_PROCESS)
596 else {
597 FIXME("Unsupported flags: %08lx\n", flags);
598 hres = E_NOTIMPL;
599 }
600
601 return hres;
602}
static HRESULT get_feature_from_process(INTERNETFEATURELIST feature)
Definition: internet.c:568
GLbitfield flags
Definition: glext.h:7161

Referenced by CoInternetIsFeatureEnabled().

◆ load_process_feature()

static HRESULT load_process_feature ( INTERNETFEATURELIST  feature)
static

Definition at line 513 of file internet.c.

514{
515 DWORD res;
518 LPCWSTR process_name, feature_name;
520 BOOL check_hklm = FALSE;
522
524 ERR("Failed to get module file name: %lu\n", GetLastError());
525 return E_UNEXPECTED;
526 }
527
528 process_name = wcsrchr(module_name, '\\');
529 if(!process_name) {
530 ERR("Invalid module file name: %s\n", debugstr_w(module_name));
531 return E_UNEXPECTED;
532 }
533
534 /* Skip past the '\\' in front of the filename. */
535 ++process_name;
536
538
540 if(res == ERROR_SUCCESS) {
541 if(get_feature_from_reg(feature_control, feature_name, process_name, &enabled)) {
542 hres = enabled ? S_OK : S_FALSE;
544 } else
545 /* We didn't find anything in HKCU, so check HKLM. */
546 check_hklm = TRUE;
547
549 }
550
551 if(check_hklm) {
553 if(res == ERROR_SUCCESS) {
554 if(get_feature_from_reg(feature_control, feature_name, process_name, &enabled)) {
555 hres = enabled ? S_OK : S_FALSE;
557 }
559 }
560 }
561
562 /* Don't bother checking the registry again for this feature. */
564
565 return hres;
566}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define ERR(fmt,...)
Definition: precomp.h:57
static LPCWSTR LPCWSTR module_name
Definition: db.cpp:171
#define wcsrchr
Definition: compat.h:16
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
static const WCHAR feature_control_keyW[]
Definition: internet.c:28
static BOOL get_feature_from_reg(HKEY feature_control, LPCWSTR feature_name, LPCWSTR process_name, BOOL *enabled)
Definition: internet.c:482
unsigned int BOOL
Definition: ntddk_ex.h:94
short WCHAR
Definition: pedump.c:58
LPCWSTR feature_name
Definition: internet.c:41
BOOL check_registry
Definition: internet.c:43
const uint16_t * LPCWSTR
Definition: typedefs.h:57
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define E_UNEXPECTED
Definition: winerror.h:3528
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by get_feature_from_process().

◆ parse_canonicalize_url()

static HRESULT parse_canonicalize_url ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 109 of file internet.c.

111{
113 DWORD prsize = size;
115
116 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
117
119
120 if(protocol_info) {
121 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_CANONICALIZE,
122 flags, result, size, rsize, 0);
123 IInternetProtocolInfo_Release(protocol_info);
124 if(SUCCEEDED(hres))
125 return hres;
126 }
127
128 hres = UrlCanonicalizeW(url, result, &prsize, flags);
129
130 if(rsize)
131 *rsize = prsize;
132 return hres;
133}
HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWORD *canonicalized_len, DWORD flags)
Definition: path.c:4128
GLuint64EXT * result
Definition: glext.h:11304
static const WCHAR url[]
Definition: encode.c:1384

Referenced by CoInternetParseUrl().

◆ parse_domain()

static HRESULT parse_domain ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 228 of file internet.c.

230{
233
234 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
235
237
238 if(protocol_info) {
239 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_DOMAIN,
240 flags, result, size, rsize, 0);
241 IInternetProtocolInfo_Release(protocol_info);
242 if(SUCCEEDED(hres))
243 return hres;
244 }
245
247 if(rsize)
248 *rsize = size;
249
250 if(hres == E_POINTER)
251 return S_FALSE;
252
253 if(FAILED(hres))
254 return E_FAIL;
255 return S_OK;
256}
HRESULT WINAPI UrlGetPartW(const WCHAR *url, WCHAR *out, DWORD *out_len, DWORD part, DWORD flags)
Definition: path.c:4628
@ URL_PART_HOSTNAME
Definition: shlwapi.h:587
#define E_POINTER
Definition: winerror.h:3480

Referenced by CoInternetParseUrl().

◆ parse_encode()

static HRESULT parse_encode ( LPCWSTR  url,
PARSEACTION  action,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 154 of file internet.c.

155{
157 DWORD prsize;
159
160 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
161
163
164 if(protocol_info) {
165 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, action,
166 flags, result, size, rsize, 0);
167 IInternetProtocolInfo_Release(protocol_info);
168 if(SUCCEEDED(hres))
169 return hres;
170 }
171
172 prsize = size;
173 hres = UrlUnescapeW((LPWSTR)url, result, &prsize, flags);
174
175 if(rsize)
176 *rsize = prsize;
177
178 return hres;
179}
HRESULT WINAPI UrlUnescapeW(WCHAR *url, WCHAR *unescaped, DWORD *unescaped_len, DWORD flags)
Definition: path.c:2912
action
Definition: namespace.c:707
uint16_t * LPWSTR
Definition: typedefs.h:56

Referenced by CoInternetParseUrl().

◆ parse_path_from_url()

static HRESULT parse_path_from_url ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 181 of file internet.c.

182{
184 DWORD prsize;
186
187 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
188
190
191 if(protocol_info) {
192 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_PATH_FROM_URL,
193 flags, result, size, rsize, 0);
194 IInternetProtocolInfo_Release(protocol_info);
195 if(SUCCEEDED(hres))
196 return hres;
197 }
198
199 prsize = size;
200 hres = PathCreateFromUrlW(url, result, &prsize, 0);
201
202 if(rsize)
203 *rsize = prsize;
204 return hres;
205}
HRESULT WINAPI PathCreateFromUrlW(const WCHAR *url, WCHAR *path, DWORD *pcchPath, DWORD dwReserved)
Definition: path.c:3049

Referenced by CoInternetParseUrl().

◆ parse_rootdocument()

static HRESULT parse_rootdocument ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 258 of file internet.c.

260{
264
265 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
266
268
269 if(protocol_info) {
270 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_ROOTDOCUMENT,
271 flags, result, size, rsize, 0);
272 IInternetProtocolInfo_Release(protocol_info);
273 if(SUCCEEDED(hres))
274 return hres;
275 }
276
277 url_info.cbSize = sizeof(url_info);
279 return E_FAIL;
280
281 switch(url_info.nScheme) {
282 case URL_SCHEME_FTP:
283 case URL_SCHEME_HTTP:
284 case URL_SCHEME_HTTPS:
285 if(url_info.cchSuffix<3 || *(url_info.pszSuffix)!='/'
286 || *(url_info.pszSuffix+1)!='/')
287 return E_FAIL;
288
289 if(size < url_info.cchProtocol+3) {
290 size = 0;
292
293 if(rsize)
294 *rsize = size+url_info.cchProtocol+3;
295
296 if(hres == E_POINTER)
297 return S_FALSE;
298
299 return hres;
300 }
301
302 size -= url_info.cchProtocol+3;
303 hres = UrlGetPartW(url, result+url_info.cchProtocol+3,
305
306 if(hres == E_POINTER)
307 return S_FALSE;
308
309 if(FAILED(hres))
310 return E_FAIL;
311
312 if(rsize)
313 *rsize = size+url_info.cchProtocol+3;
314
315 memcpy(result, url, (url_info.cchProtocol+3)*sizeof(WCHAR));
316 return hres;
317 default:
318 return E_FAIL;
319 }
320}
HRESULT WINAPI ParseURLW(const WCHAR *url, PARSEDURLW *result)
Definition: path.c:2807
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
@ URL_SCHEME_HTTPS
Definition: shlwapi.h:555
@ URL_SCHEME_FTP
Definition: shlwapi.h:545
@ URL_SCHEME_HTTP
Definition: shlwapi.h:546
Definition: icif.c:78

Referenced by CoInternetParseUrl().

◆ parse_schema()

static HRESULT parse_schema ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 82 of file internet.c.

83{
84 WCHAR *ptr;
85 DWORD len = 0;
86
87 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
88
89 if(flags)
90 ERR("wrong flags\n");
91
92 ptr = wcschr(url, ':');
93 if(ptr)
94 len = ptr-url;
95
96 if(rsize)
97 *rsize = len;
98
99 if(len >= size)
100 return E_POINTER;
101
102 if(len)
103 memcpy(result, url, len*sizeof(WCHAR));
104 result[len] = 0;
105
106 return S_OK;
107}
#define wcschr
Definition: compat.h:17
GLenum GLsizei len
Definition: glext.h:6722
static PVOID ptr
Definition: dispmode.c:27

Referenced by CoInternetParseUrl().

◆ parse_security_domain()

static HRESULT parse_security_domain ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 207 of file internet.c.

209{
212
213 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
214
216
217 if(protocol_info) {
218 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_SECURITY_DOMAIN,
219 flags, result, size, rsize, 0);
220 IInternetProtocolInfo_Release(protocol_info);
221 if(SUCCEEDED(hres))
222 return hres;
223 }
224
225 return E_FAIL;
226}

Referenced by CoInternetParseUrl().

◆ parse_security_url()

static HRESULT parse_security_url ( LPCWSTR  url,
DWORD  flags,
LPWSTR  result,
DWORD  size,
DWORD rsize 
)
static

Definition at line 135 of file internet.c.

136{
139
140 TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
141
143
144 if(protocol_info) {
145 hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_SECURITY_URL,
146 flags, result, size, rsize, 0);
147 IInternetProtocolInfo_Release(protocol_info);
148 return hres;
149 }
150
151 return E_FAIL;
152}

Referenced by CoInternetParseUrl().

◆ set_feature_on_process()

static void set_feature_on_process ( INTERNETFEATURELIST  feature,
BOOL  enable 
)
static

◆ set_internet_feature()

static HRESULT set_internet_feature ( INTERNETFEATURELIST  feature,
DWORD  flags,
BOOL  enable 
)
static

Definition at line 466 of file internet.c.

467{
468 const DWORD supported_flags = SET_FEATURE_ON_PROCESS;
469
470 if(feature >= FEATURE_ENTRY_COUNT)
471 return E_FAIL;
472
473 if(flags & ~supported_flags)
474 FIXME("Unsupported flags: %08lx\n", flags & ~supported_flags);
475
476 if(flags & SET_FEATURE_ON_PROCESS)
478
479 return S_OK;
480}
static void set_feature_on_process(INTERNETFEATURELIST feature, BOOL enable)
Definition: internet.c:456

Referenced by CoInternetSetFeatureEnabled().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( urlmon  )

Variable Documentation

◆ feature_control_keyW

const WCHAR feature_control_keyW[]
static
Initial value:
=
L"Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl"

Definition at line 28 of file internet.c.

Referenced by load_process_feature().

◆ process_feature_controls

feature_control process_feature_controls[FEATURE_ENTRY_COUNT]
static
Initial value:
= {
{L"FEATURE_OBJECT_CACHING", TRUE ,TRUE},
{L"FEATURE_ZONE_ELEVATION", FALSE,TRUE},
{L"FEATURE_MIME_HANDLING", FALSE,TRUE},
{L"FEATURE_MIME_SNIFFING", FALSE,TRUE},
{L"FEATURE_WINDOW_RESTRICTIONS", FALSE,TRUE},
{L"FEATURE_WEBOC_POPUPMANAGEMENT", FALSE,TRUE},
{L"FEATURE_BEHAVIORS", TRUE ,TRUE},
{L"FEATURE_DISABLE_MK_PROTOCOL", TRUE ,TRUE},
{L"FEATURE_LOCALMACHINE_LOCKDOWN", FALSE,TRUE},
{L"FEATURE_SECURITYBAND", FALSE,TRUE},
{L"FEATURE_RESTRICT_ACTIVEXINSTALL", FALSE,TRUE},
{L"FEATURE_VALIDATE_NAVIGATE_URL", FALSE,TRUE},
{L"FEATURE_RESTRICT_FILEDOWNLOAD", FALSE,TRUE},
{L"FEATURE_ADDON_MANAGEMENT", FALSE,TRUE},
{L"FEATURE_PROTOCOL_LOCKDOWN", FALSE,TRUE},
{L"FEATURE_HTTP_USERNAME_PASSWORD_DISABLE", FALSE,TRUE},
{L"FEATURE_SAFE_BINDTOOBJECT", FALSE,TRUE},
{L"FEATURE_UNC_SAVEDFILECHECK", FALSE,TRUE},
{L"FEATURE_GET_URL_DOM_FILEPATH_UNENCODED", TRUE ,TRUE},
{L"FEATURE_TABBED_BROWSING", FALSE,TRUE},
{L"FEATURE_SSLUX", FALSE,TRUE},
{L"FEATURE_DISABLE_NAVIGATION_SOUNDS", FALSE,TRUE},
{L"FEATURE_DISABLE_LEGACY_COMPRESSION", TRUE ,TRUE},
{L"FEATURE_FORCE_ADDR_AND_STATUS", FALSE,TRUE},
{L"FEATURE_XMLHTTP", TRUE ,TRUE},
{L"FEATURE_DISABLE_TELNET_PROTOCOL", FALSE,TRUE},
{L"FEATURE_FEEDS", FALSE,TRUE},
{L"FEATURE_BLOCK_INPUT_PROMPTS", FALSE,TRUE}
}

Definition at line 51 of file internet.c.

Referenced by get_feature_from_process(), load_process_feature(), and set_feature_on_process().

◆ process_features_cs

static CRITICAL_SECTION process_features_cs = { &process_features_cs_dbg, -1, 0, 0, 0, 0 }
static

Definition at line 31 of file internet.c.

Referenced by get_feature_from_process(), and set_feature_on_process().

◆ process_features_cs_dbg

CRITICAL_SECTION_DEBUG process_features_cs_dbg
static
Initial value:
=
{
0, 0, { (DWORD_PTR)(__FILE__ ": process features") }
}
static CRITICAL_SECTION_DEBUG process_features_cs_dbg
Definition: internet.c:32
#define DWORD_PTR
Definition: treelist.c:76

Definition at line 32 of file internet.c.