mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-12 18:50:08 +00:00
Cookie changes.
This commit is contained in:
parent
a1c7463f7a
commit
9572e18899
@ -484,6 +484,7 @@ PR_PUBLIC_API(char *) HT_HTMLPaneHeight(HT_View htView);
|
|||||||
PR_PUBLIC_API(void) HT_AddSitemapFor(HT_Pane htPane, char *pUrl, char *pSitemapUrl, char* name);
|
PR_PUBLIC_API(void) HT_AddSitemapFor(HT_Pane htPane, char *pUrl, char *pSitemapUrl, char* name);
|
||||||
PR_PUBLIC_API(void) HT_AddRelatedLinksFor(HT_Pane htPane, char *pUrl);
|
PR_PUBLIC_API(void) HT_AddRelatedLinksFor(HT_Pane htPane, char *pUrl);
|
||||||
PR_PUBLIC_API(void) HT_ExitPage(HT_Pane htPane, char *pUrl);
|
PR_PUBLIC_API(void) HT_ExitPage(HT_Pane htPane, char *pUrl);
|
||||||
|
PR_PUBLIC_API(void) RDF_AddCookieResource(char* name, char* path, char* host, char* expires) ;
|
||||||
|
|
||||||
NSPR_END_EXTERN_C
|
NSPR_END_EXTERN_C
|
||||||
|
|
||||||
|
@ -349,11 +349,11 @@ updateNewHistItem (DBT *key, DBT *data)
|
|||||||
COPY_INT32(&first, (time_t *)((char *)data->data + 4));
|
COPY_INT32(&first, (time_t *)((char *)data->data + 4));
|
||||||
COPY_INT32(&numaccess, (time_t *)((char *)data->data + 8));
|
COPY_INT32(&numaccess, (time_t *)((char *)data->data + 8));
|
||||||
|
|
||||||
if (hostHash) collateOneHist(grdf, gNavCenter->RDF_HistoryBySite,
|
if (hostHash) collateOneHist(grdf, gNavCenter->RDF_History,
|
||||||
(char*)key->data, /* url */
|
(char*)key->data, /* url */
|
||||||
((char*)data->data + 16), /* title */
|
((char*)data->data + 16), /* title */
|
||||||
last, first, numaccess, 0);
|
last, first, numaccess, 0);
|
||||||
if (ByDateOpened) collateOneHist(grdf, gNavCenter->RDF_HistoryByDate,
|
if (ByDateOpened) collateOneHist(grdf, gNavCenter->RDF_History,
|
||||||
(char*)key->data, /* url */
|
(char*)key->data, /* url */
|
||||||
((char*)data->data + 16), /* title */
|
((char*)data->data + 16), /* title */
|
||||||
last, first, numaccess, 1);
|
last, first, numaccess, 1);
|
||||||
@ -423,7 +423,7 @@ HistCreate (char* url, PRBool createp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRBool bySite = 0;
|
||||||
|
|
||||||
Assertion
|
Assertion
|
||||||
histAddParent (RDF_Resource child, RDF_Resource parent)
|
histAddParent (RDF_Resource child, RDF_Resource parent)
|
||||||
@ -448,23 +448,33 @@ histAddParent (RDF_Resource child, RDF_Resource parent)
|
|||||||
parent->rarg2 = newAs;
|
parent->rarg2 = newAs;
|
||||||
} else {
|
} else {
|
||||||
PRBool added = 0;
|
PRBool added = 0;
|
||||||
|
if (bySite) {
|
||||||
|
while (nextAs && !isSeparator(nextAs->u)) {
|
||||||
|
prevAs = nextAs;
|
||||||
|
nextAs = nextAs->invNext;
|
||||||
|
}
|
||||||
|
if (nextAs) {
|
||||||
|
prevAs = nextAs;
|
||||||
|
nextAs = nextAs->invNext;
|
||||||
|
}
|
||||||
|
}
|
||||||
while (nextAs != null) {
|
while (nextAs != null) {
|
||||||
char* nid = resourceID(nextAs->u);
|
char* nid = resourceID(nextAs->u);
|
||||||
if (strcmp( resourceID(child), resourceID(nextAs->u)) > 0) {
|
if (strcmp(resourceID(child), resourceID(nextAs->u)) > 0) {
|
||||||
if (prevAs == nextAs) {
|
if (prevAs == nextAs) {
|
||||||
newAs->invNext = prevAs;
|
newAs->invNext = prevAs;
|
||||||
parent->rarg2 = newAs;
|
parent->rarg2 = newAs;
|
||||||
added = 1;
|
added = 1;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
newAs->invNext = nextAs;
|
newAs->invNext = nextAs;
|
||||||
prevAs->invNext = newAs;
|
prevAs->invNext = newAs;
|
||||||
added = 1;
|
added = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
prevAs = nextAs;
|
prevAs = nextAs;
|
||||||
nextAs = nextAs->invNext;
|
nextAs = nextAs->invNext;
|
||||||
}
|
}
|
||||||
if (!added) prevAs->invNext = newAs;
|
if (!added) prevAs->invNext = newAs;
|
||||||
}
|
}
|
||||||
@ -513,7 +523,7 @@ HistPossiblyAccessFile (RDFT rdf, RDF_Resource u, RDF_Resource s, PRBool inverse
|
|||||||
{
|
{
|
||||||
if ((s == gCoreVocab->RDF_parent) && inversep && (rdf == gHistoryStore) &&
|
if ((s == gCoreVocab->RDF_parent) && inversep && (rdf == gHistoryStore) &&
|
||||||
((u == gNavCenter->RDF_HistoryByDate) || (u == gNavCenter->RDF_HistoryBySite))) {
|
((u == gNavCenter->RDF_HistoryByDate) || (u == gNavCenter->RDF_HistoryBySite))) {
|
||||||
collateHistory(rdf, u, (u == gNavCenter->RDF_HistoryByDate));
|
/* collateHistory(rdf, gNavCenter->RDF_History, (u == gNavCenter->RDF_HistoryByDate)); */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,6 +535,7 @@ MakeHistoryStore (char* url)
|
|||||||
if (startsWith("rdf:history", url)) {
|
if (startsWith("rdf:history", url)) {
|
||||||
if (gHistoryStore == 0) {
|
if (gHistoryStore == 0) {
|
||||||
RDFT ntr = (RDFT)getMem(sizeof(struct RDF_TranslatorStruct));
|
RDFT ntr = (RDFT)getMem(sizeof(struct RDF_TranslatorStruct));
|
||||||
|
RDF_Resource sep = createSeparator();
|
||||||
ntr->assert = NULL;
|
ntr->assert = NULL;
|
||||||
ntr->unassert = historyUnassert;
|
ntr->unassert = historyUnassert;
|
||||||
ntr->getSlotValue = remoteStoreGetSlotValue;
|
ntr->getSlotValue = remoteStoreGetSlotValue;
|
||||||
@ -535,6 +546,10 @@ MakeHistoryStore (char* url)
|
|||||||
ntr->possiblyAccessFile = HistPossiblyAccessFile;
|
ntr->possiblyAccessFile = HistPossiblyAccessFile;
|
||||||
gHistoryStore = ntr;
|
gHistoryStore = ntr;
|
||||||
ntr->url = copyString(url);
|
ntr->url = copyString(url);
|
||||||
|
collateHistory(ntr, gNavCenter->RDF_History, 1);
|
||||||
|
remoteStoreAdd(ntr, sep, gCoreVocab->RDF_parent, gNavCenter->RDF_History, RDF_RESOURCE_TYPE, 1);
|
||||||
|
bySite = 1;
|
||||||
|
collateHistory(ntr, gNavCenter->RDF_History, 0);
|
||||||
return ntr;
|
return ntr;
|
||||||
} else return gHistoryStore;
|
} else return gHistoryStore;
|
||||||
} else return NULL;
|
} else return NULL;
|
||||||
|
@ -2596,6 +2596,8 @@ htIsMenuCmdEnabled(HT_Pane pane, HT_MenuCmd menuCmd,
|
|||||||
if (HT_IsContainer(node)) return(false);
|
if (HT_IsContainer(node)) return(false);
|
||||||
if (HT_IsSeparator(node)) return(false);
|
if (HT_IsSeparator(node)) return(false);
|
||||||
if (resourceType(node->node) == LFS_RT) return(false);
|
if (resourceType(node->node) == LFS_RT) return(false);
|
||||||
|
if (resourceType(node->node) == COOKIE_RT)
|
||||||
|
return(false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HT_CMD_OPEN_COMPOSER:
|
case HT_CMD_OPEN_COMPOSER:
|
||||||
@ -2627,6 +2629,8 @@ htIsMenuCmdEnabled(HT_Pane pane, HT_MenuCmd menuCmd,
|
|||||||
if (!HT_IsContainer(node)) return(false);
|
if (!HT_IsContainer(node)) return(false);
|
||||||
if (htIsOpLocked(node, gNavCenter->RDF_CopyLock))
|
if (htIsOpLocked(node, gNavCenter->RDF_CopyLock))
|
||||||
return(false);
|
return(false);
|
||||||
|
if (resourceType(node->node) == COOKIE_RT)
|
||||||
|
return(false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HT_CMD_NEW_BOOKMARK:
|
case HT_CMD_NEW_BOOKMARK:
|
||||||
@ -2708,11 +2712,15 @@ htIsMenuCmdEnabled(HT_Pane pane, HT_MenuCmd menuCmd,
|
|||||||
if (HT_IsContainer(node))
|
if (HT_IsContainer(node))
|
||||||
{
|
{
|
||||||
if (node->node == bmFolder) return(false);
|
if (node->node == bmFolder) return(false);
|
||||||
|
if (resourceType(node->node) == COOKIE_RT)
|
||||||
|
return(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (node->parent->node == bmFolder)
|
if (node->parent->node == bmFolder)
|
||||||
return(false);
|
return(false);
|
||||||
|
if (resourceType(node->parent->node) == COOKIE_RT)
|
||||||
|
return(false);
|
||||||
}
|
}
|
||||||
if (htIsOpLocked(node, gNavCenter->RDF_CopyLock))
|
if (htIsOpLocked(node, gNavCenter->RDF_CopyLock))
|
||||||
return(false);
|
return(false);
|
||||||
@ -2729,6 +2737,8 @@ htIsMenuCmdEnabled(HT_Pane pane, HT_MenuCmd menuCmd,
|
|||||||
if (node == NULL) return(false);
|
if (node == NULL) return(false);
|
||||||
if (HT_IsContainer(node)) return(false);
|
if (HT_IsContainer(node)) return(false);
|
||||||
if (HT_IsSeparator(node)) return(false);
|
if (HT_IsSeparator(node)) return(false);
|
||||||
|
if (resourceType(node->node) == COOKIE_RT)
|
||||||
|
return(false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HT_CMD_SET_TOOLBAR_FOLDER:
|
case HT_CMD_SET_TOOLBAR_FOLDER:
|
||||||
@ -2791,7 +2801,8 @@ htIsMenuCmdEnabled(HT_Pane pane, HT_MenuCmd menuCmd,
|
|||||||
if (node->parent == NULL) return(false);
|
if (node->parent == NULL) return(false);
|
||||||
if (node->parent->node == NULL) return(false);
|
if (node->parent->node == NULL) return(false);
|
||||||
if ((resourceType(node->parent->node) != RDF_RT) &&
|
if ((resourceType(node->parent->node) != RDF_RT) &&
|
||||||
(resourceType(node->parent->node) != HISTORY_RT))
|
(resourceType(node->parent->node) != HISTORY_RT) &&
|
||||||
|
(resourceType(node->parent->node) != COOKIE_RT))
|
||||||
return(false);
|
return(false);
|
||||||
if (HT_IsContainer(node))
|
if (HT_IsContainer(node))
|
||||||
{
|
{
|
||||||
@ -5489,6 +5500,9 @@ HT_Properties (HT_Resource node)
|
|||||||
dynStr = constructHTML(dynStr, node, (void *)gWebData->RDF_URL, HT_COLUMN_STRING);
|
dynStr = constructHTML(dynStr, node, (void *)gWebData->RDF_URL, HT_COLUMN_STRING);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case COOKIE_RT:
|
||||||
|
break;
|
||||||
|
|
||||||
case SEARCH_RT:
|
case SEARCH_RT:
|
||||||
case LDAP_RT:
|
case LDAP_RT:
|
||||||
case PM_RT:
|
case PM_RT:
|
||||||
|
@ -75,6 +75,7 @@
|
|||||||
#define CACHE_RT 11
|
#define CACHE_RT 11
|
||||||
#define ATALK_RT 12
|
#define ATALK_RT 12
|
||||||
#define ATALKVIRTUAL_RT 13
|
#define ATALKVIRTUAL_RT 13
|
||||||
|
#define COOKIE_RT 14
|
||||||
#define WILDCARD_RT 15
|
#define WILDCARD_RT 15
|
||||||
|
|
||||||
|
|
||||||
@ -367,6 +368,7 @@ PRBool remoteStoreHasAssertion (RDFT rdf, RDF_Resource u, RDF_Resource s, void*
|
|||||||
void* remoteStoreGetSlotValue (RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv) ;
|
void* remoteStoreGetSlotValue (RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv) ;
|
||||||
RDF_Cursor remoteStoreGetSlotValues (RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv) ;
|
RDF_Cursor remoteStoreGetSlotValues (RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv) ;
|
||||||
RDF_Cursor remoteStoreGetSlotValuesInt (RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv) ;
|
RDF_Cursor remoteStoreGetSlotValuesInt (RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv) ;
|
||||||
|
RDF_Resource createSeparator(void);
|
||||||
|
|
||||||
void* remoteStoreNextValue (RDFT mcf, RDF_Cursor c) ;
|
void* remoteStoreNextValue (RDFT mcf, RDF_Cursor c) ;
|
||||||
RDF_Error remoteStoreDisposeCursor (RDFT mcf, RDF_Cursor c) ;
|
RDF_Error remoteStoreDisposeCursor (RDFT mcf, RDF_Cursor c) ;
|
||||||
|
@ -384,6 +384,10 @@ remoteStoreNextValue (RDFT mcf, RDF_Cursor c)
|
|||||||
c->value = (c->inversep ? as->u : as->value);
|
c->value = (c->inversep ? as->u : as->value);
|
||||||
}
|
}
|
||||||
c->pdata = (c->inversep ? as->invNext : as->next);
|
c->pdata = (c->inversep ? as->invNext : as->next);
|
||||||
|
if (c->type == RDF_RESOURCE_TYPE) {
|
||||||
|
FE_Trace(resourceID(c->value));
|
||||||
|
FE_Trace("\n");
|
||||||
|
}
|
||||||
return c->value;
|
return c->value;
|
||||||
}
|
}
|
||||||
c->pdata = (c->inversep ? as->invNext : as->next);
|
c->pdata = (c->inversep ? as->invNext : as->next);
|
||||||
|
@ -312,7 +312,7 @@ urlEquals (const char* url1, const char* url2)
|
|||||||
PRBool
|
PRBool
|
||||||
isSeparator (RDF_Resource r)
|
isSeparator (RDF_Resource r)
|
||||||
{
|
{
|
||||||
return startsWith("separator", resourceID(r));
|
return (startsWith("separator", resourceID(r))) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -519,99 +519,169 @@ RDFUtil_SetDefaultSelectedView(RDF_Resource container)
|
|||||||
|
|
||||||
RDFT gCookieStore = 0;
|
RDFT gCookieStore = 0;
|
||||||
|
|
||||||
|
PUBLIC void
|
||||||
|
NET_InitRDFCookieResources (void) ;
|
||||||
|
|
||||||
|
PR_PUBLIC_API(void)
|
||||||
void
|
RDF_AddCookieResource(char* name, char* path, char* host, char* expires) {
|
||||||
AddCookieResource(char* name, char* path, char* host, char* expires)
|
|
||||||
{
|
|
||||||
char* url = getMem(strlen(name) + strlen(host));
|
char* url = getMem(strlen(name) + strlen(host));
|
||||||
RDF_Resource ru;
|
RDF_Resource ru;
|
||||||
sprintf(url, "%s [%s]", host, name);
|
RDF_Resource hostUnit = RDF_GetResource(NULL, host, 0);
|
||||||
|
if (!hostUnit) {
|
||||||
|
hostUnit = RDF_GetResource(NULL, host, 1);
|
||||||
|
setContainerp(hostUnit, 1);
|
||||||
|
setResourceType(hostUnit, COOKIE_RT);
|
||||||
|
remoteStoreAdd(gCookieStore, hostUnit, gCoreVocab->RDF_parent, gNavCenter->RDF_Cookies,
|
||||||
|
RDF_RESOURCE_TYPE, 1);
|
||||||
|
}
|
||||||
|
sprintf(url, "[%s]%s",path, name);
|
||||||
ru = RDF_GetResource(NULL, url, 1);
|
ru = RDF_GetResource(NULL, url, 1);
|
||||||
remoteStoreAdd(gCookieStore, ru, gCoreVocab->RDF_parent, gNavCenter->RDF_Cookies, RDF_RESOURCE_TYPE, 1);
|
setResourceType(ru, COOKIE_RT);
|
||||||
|
remoteStoreAdd(gCookieStore, ru, gCoreVocab->RDF_parent, hostUnit, RDF_RESOURCE_TYPE, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LINE_BUFFER_SIZE 4096
|
PRBool
|
||||||
|
CookieUnassert (RDFT r, RDF_Resource u, RDF_Resource s, void* v, RDF_ValueType type) {
|
||||||
|
if (resourceType(u) == COOKIE_RT) {
|
||||||
|
/* delete the cookie */
|
||||||
|
remoteStoreRemove(r, u, s, v, type);
|
||||||
|
return 1;
|
||||||
|
} else return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
RDF_Cursor
|
||||||
RDF_ReadCookies(char * filename)
|
CookieGetSlotValues(RDFT rdf, RDF_Resource u, RDF_Resource s,
|
||||||
|
RDF_ValueType type, PRBool inversep, PRBool tv)
|
||||||
{
|
{
|
||||||
XP_File fp;
|
RDF_Cursor c = NULL;
|
||||||
char buffer[LINE_BUFFER_SIZE];
|
|
||||||
char *host, *is_domain, *path, *secure, *expires, *name, *cookie;
|
|
||||||
Bool added_to_list;
|
|
||||||
|
|
||||||
if(!(fp = XP_FileOpen(filename, xpHTTPCookie, XP_FILE_READ)))
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
/* format is:
|
|
||||||
*
|
|
||||||
* host \t is_domain \t path \t secure \t expires \t name \t cookie
|
|
||||||
*
|
|
||||||
* if this format isn't respected we move onto the next line in the file.
|
|
||||||
* is_domain is TRUE or FALSE -- defaulting to FALSE
|
|
||||||
* secure is TRUE or FALSE -- should default to TRUE
|
|
||||||
* expires is a time_t integer
|
|
||||||
* cookie can have tabs
|
|
||||||
*/
|
|
||||||
while(XP_FileReadLine(buffer, LINE_BUFFER_SIZE, fp))
|
|
||||||
{
|
|
||||||
added_to_list = FALSE;
|
|
||||||
|
|
||||||
if (*buffer == '#' || *buffer == '\n' || *buffer == '\r' || *buffer == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
host = buffer;
|
|
||||||
|
|
||||||
if( !(is_domain = XP_STRCHR(host, '\t')) )
|
|
||||||
continue;
|
|
||||||
*is_domain++ = '\0';
|
|
||||||
if(*is_domain == CR || *is_domain == LF || *is_domain == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( !(path = XP_STRCHR(is_domain, '\t')) )
|
|
||||||
continue;
|
|
||||||
*path++ = '\0';
|
|
||||||
if(*path == '\n' || *path == '\r' || *path == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( !(secure = XP_STRCHR(path, '\t')) )
|
|
||||||
continue;
|
|
||||||
*secure++ = '\0';
|
|
||||||
if(*secure == CR || *secure == LF || *secure == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( !(expires = XP_STRCHR(secure, '\t')) )
|
|
||||||
continue;
|
|
||||||
*expires++ = '\0';
|
|
||||||
if(*expires == '\r' || *expires == '\n' || *expires == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( !(name = XP_STRCHR(expires, '\t')) )
|
|
||||||
continue;
|
|
||||||
*name++ = '\0';
|
|
||||||
if(*name == CR || *name == LF || *name == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( !(cookie = XP_STRCHR(name, '\t')) )
|
|
||||||
continue;
|
|
||||||
*cookie++ = '\0';
|
|
||||||
if(*cookie == CR || *cookie == LF || *cookie == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* remove the '\n' from the end of the cookie
|
|
||||||
XP_StripLine(cookie); */
|
|
||||||
|
|
||||||
/* construct a new cookie resource
|
|
||||||
*/
|
|
||||||
AddCookieResource(name, path, host, expires);
|
|
||||||
}
|
|
||||||
XP_FileClose(fp);
|
|
||||||
|
|
||||||
|
if ((resourceType(u) == COOKIE_RT) &&
|
||||||
|
(s == gNavCenter->RDF_Command) &&
|
||||||
|
(type == RDF_RESOURCE_TYPE) && (tv))
|
||||||
|
{
|
||||||
|
if ((c = (RDF_Cursor)getMem(sizeof(struct RDF_CursorStruct))) != NULL)
|
||||||
|
{
|
||||||
|
c->u = u;
|
||||||
|
c->s = s;
|
||||||
|
c->type = type;
|
||||||
|
c->inversep = inversep;
|
||||||
|
c->tv = tv;
|
||||||
|
c->count = 0;
|
||||||
|
c->pdata = NULL;
|
||||||
|
}
|
||||||
|
return(c);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c = remoteStoreGetSlotValues(rdf, u, s, type, inversep, tv);
|
||||||
|
}
|
||||||
|
return(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define COOKIE_CMD_PREFIX "CookieCommand:"
|
||||||
|
#define COOKIE_CMD_HOSTS "CookieCommand:TBD" /* actual cmd name */
|
||||||
|
|
||||||
|
void *
|
||||||
|
CookieGetNextValue(RDFT rdf, RDF_Cursor c)
|
||||||
|
{
|
||||||
|
|
||||||
|
void *data = NULL;
|
||||||
|
|
||||||
|
if (c != NULL)
|
||||||
|
{
|
||||||
|
if ((resourceType(c->u) == COOKIE_RT) &&
|
||||||
|
(c->s == gNavCenter->RDF_Command) &&
|
||||||
|
(c->type == RDF_RESOURCE_TYPE))
|
||||||
|
{
|
||||||
|
/* return cookie commands here */
|
||||||
|
switch(c->count)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if (containerp(c->u))
|
||||||
|
{
|
||||||
|
data = (void *)RDF_GetResource(NULL,
|
||||||
|
COOKIE_CMD_HOSTS, true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
c->count++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data = remoteStoreNextValue(rdf, c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
RDF_Error
|
||||||
|
CookieDisposeCursor(RDFT rdf, RDF_Cursor c)
|
||||||
|
{
|
||||||
|
RDF_Error err;
|
||||||
|
|
||||||
|
if (c != NULL)
|
||||||
|
{
|
||||||
|
if ((c->s == gNavCenter->RDF_Command) &&
|
||||||
|
(c->type == RDF_RESOURCE_TYPE))
|
||||||
|
{
|
||||||
|
if (c->pdata != NULL)
|
||||||
|
{
|
||||||
|
/* free private data */
|
||||||
|
}
|
||||||
|
freeMem(c);
|
||||||
|
err = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
err = remoteStoreDisposeCursor(rdf, c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
PRBool
|
||||||
|
CookieAssert(RDFT rdf, RDF_Resource u, RDF_Resource s, void *v,
|
||||||
|
RDF_ValueType type, PRBool tv)
|
||||||
|
{
|
||||||
|
PRBool retVal = false;
|
||||||
|
|
||||||
|
if ((resourceType(u) == COOKIE_RT) &&
|
||||||
|
(s == gNavCenter->RDF_Command) &&
|
||||||
|
(type == RDF_RESOURCE_TYPE) &&
|
||||||
|
(v != NULL) && (tv))
|
||||||
|
{
|
||||||
|
RDF_Resource vu = (RDF_Resource)v;
|
||||||
|
retVal = true;
|
||||||
|
/* handle command in 'v' on 'u' */
|
||||||
|
if (startsWith(COOKIE_CMD_PREFIX, resourceID(vu)))
|
||||||
|
{
|
||||||
|
if (!XP_STRCMP(resourceID(vu), COOKIE_CMD_HOSTS))
|
||||||
|
{
|
||||||
|
/* do whatever is appropriate for the cmd */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(retVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
CookieGetSlotValue(RDFT rdf, RDF_Resource u, RDF_Resource s,
|
||||||
|
RDF_ValueType type, PRBool inversep, PRBool tv)
|
||||||
|
{
|
||||||
|
void *data = NULL;
|
||||||
|
|
||||||
|
if ((startsWith(COOKIE_CMD_PREFIX, resourceID(u))) &&
|
||||||
|
(s == gCoreVocab->RDF_name) &&
|
||||||
|
(type == RDF_STRING_TYPE) && (!inversep) && (tv))
|
||||||
|
{
|
||||||
|
data = copyString(resourceID(u) + strlen(COOKIE_CMD_PREFIX));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data = remoteStoreGetSlotValue(rdf, u, s, type, inversep, tv);
|
||||||
|
}
|
||||||
|
return(data);
|
||||||
|
}
|
||||||
|
|
||||||
RDFT
|
RDFT
|
||||||
MakeCookieStore (char* url)
|
MakeCookieStore (char* url)
|
||||||
@ -619,16 +689,16 @@ MakeCookieStore (char* url)
|
|||||||
if (startsWith("rdf:CookieStore", url)) {
|
if (startsWith("rdf:CookieStore", url)) {
|
||||||
if (gCookieStore == 0) {
|
if (gCookieStore == 0) {
|
||||||
RDFT ntr = (RDFT)getMem(sizeof(struct RDF_TranslatorStruct));
|
RDFT ntr = (RDFT)getMem(sizeof(struct RDF_TranslatorStruct));
|
||||||
ntr->assert = NULL;
|
ntr->assert = CookieAssert;
|
||||||
ntr->unassert = NULL;
|
ntr->unassert = CookieUnassert;
|
||||||
ntr->getSlotValue = remoteStoreGetSlotValue;
|
ntr->getSlotValue = CookieGetSlotValue;
|
||||||
ntr->getSlotValues = remoteStoreGetSlotValues;
|
ntr->getSlotValues = CookieGetSlotValues;
|
||||||
ntr->hasAssertion = remoteStoreHasAssertion;
|
ntr->hasAssertion = remoteStoreHasAssertion;
|
||||||
ntr->nextValue = remoteStoreNextValue;
|
ntr->nextValue = CookieGetNextValue;
|
||||||
ntr->disposeCursor = remoteStoreDisposeCursor;
|
ntr->disposeCursor = CookieDisposeCursor;
|
||||||
gCookieStore = ntr;
|
gCookieStore = ntr;
|
||||||
ntr->url = copyString(url);
|
ntr->url = copyString(url);
|
||||||
RDF_ReadCookies("");
|
NET_InitRDFCookieResources ( ) ;
|
||||||
return ntr;
|
return ntr;
|
||||||
} else return gCookieStore;
|
} else return gCookieStore;
|
||||||
} else return NULL;
|
} else return NULL;
|
||||||
|
@ -69,6 +69,13 @@ char * resourceID(RDF_Resource r);
|
|||||||
char * makeResourceName (RDF_Resource node);
|
char * makeResourceName (RDF_Resource node);
|
||||||
void AddCookieResource(char* name, char* path, char* host, char* expires);
|
void AddCookieResource(char* name, char* path, char* host, char* expires);
|
||||||
void RDF_ReadCookies(char * filename);
|
void RDF_ReadCookies(char * filename);
|
||||||
|
PRBool CookieUnassert (RDFT r, RDF_Resource u, RDF_Resource s, void* v, RDF_ValueType type);
|
||||||
|
|
||||||
|
RDF_Cursor CookieGetSlotValues(RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv);
|
||||||
|
void * CookieGetNextValue(RDFT rdf, RDF_Cursor c);
|
||||||
|
RDF_Error CookieDisposeCursor(RDFT rdf, RDF_Cursor c);
|
||||||
|
PRBool CookieAssert(RDFT rdf, RDF_Resource u, RDF_Resource s, void *v, RDF_ValueType type, PRBool tv);
|
||||||
|
void * CookieGetSlotValue(RDFT rdf, RDF_Resource u, RDF_Resource s, RDF_ValueType type, PRBool inversep, PRBool tv);
|
||||||
|
|
||||||
XP_END_PROTOS
|
XP_END_PROTOS
|
||||||
|
|
||||||
|
@ -1790,12 +1790,16 @@ net_IntSetCookieString(MWContext * context,
|
|||||||
while((tmp_cookie_ptr = (net_CookieStruct *) XP_ListNextObject(list_ptr))!=0) {
|
while((tmp_cookie_ptr = (net_CookieStruct *) XP_ListNextObject(list_ptr))!=0) {
|
||||||
if(new_len > PL_strlen(tmp_cookie_ptr->path)) {
|
if(new_len > PL_strlen(tmp_cookie_ptr->path)) {
|
||||||
XP_ListInsertObject(net_cookie_list, tmp_cookie_ptr, prev_cookie);
|
XP_ListInsertObject(net_cookie_list, tmp_cookie_ptr, prev_cookie);
|
||||||
|
RDF_AddCookieResource(tmp_cookie_ptr->name, tmp_cookie_ptr->path,
|
||||||
|
tmp_cookie_ptr->host, tmp_cookie_ptr->expires) ;
|
||||||
net_unlock_cookie_list();
|
net_unlock_cookie_list();
|
||||||
cookies_changed = TRUE;
|
cookies_changed = TRUE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* no shorter strings found in list */
|
/* no shorter strings found in list */
|
||||||
|
RDF_AddCookieResource(prev_cookie->name, prev_cookie->path,
|
||||||
|
prev_cookie->host, prev_cookie->expires);
|
||||||
XP_ListAddObjectToEnd(net_cookie_list, prev_cookie);
|
XP_ListAddObjectToEnd(net_cookie_list, prev_cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2065,6 +2069,18 @@ NET_SaveCookies(char * filename)
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PUBLIC void
|
||||||
|
NET_InitRDFCookieResources (void) {
|
||||||
|
XP_List *tmpList = net_cookie_list;
|
||||||
|
net_CookieStruct * item=NULL;
|
||||||
|
net_lock_cookie_list();
|
||||||
|
while ( (item=XP_ListNextObject(tmpList)) ) {
|
||||||
|
RDF_AddCookieResource(item->name, item->path, item->host, item->expires) ;
|
||||||
|
}
|
||||||
|
net_unlock_cookie_list();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* reads HTTP cookies from disk
|
/* reads HTTP cookies from disk
|
||||||
*
|
*
|
||||||
@ -2217,6 +2233,8 @@ NET_ReadCookies(char * filename)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* --- New stuff: General auth utils (currently used only by proxy auth) --- */
|
/* --- New stuff: General auth utils (currently used only by proxy auth) --- */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user