зеркало из https://github.com/mozilla/gecko-dev.git
Removed privacy dependencies on transaction receipt functions.
This file does not yet build in the default tree configuration.
This commit is contained in:
Родитель
c803d6b8ea
Коммит
18e206d931
|
@ -28,7 +28,9 @@
|
||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "xp.h"
|
#include "xp.h"
|
||||||
#include "glhist.h"
|
#include "glhist.h"
|
||||||
#include "receipt.h"
|
#include "layout.h"
|
||||||
|
#include "laylayer.h"
|
||||||
|
/* #include "receipt.h" */
|
||||||
|
|
||||||
#ifdef DEBUG_dfm
|
#ifdef DEBUG_dfm
|
||||||
#define D(x) x
|
#define D(x) x
|
||||||
|
@ -39,8 +41,125 @@
|
||||||
#define PRVCY_ExternalContext(c) ((c->type == MWContextBrowser) || \
|
#define PRVCY_ExternalContext(c) ((c->type == MWContextBrowser) || \
|
||||||
(MAIL_NEWS_TYPE(cp->type)))
|
(MAIL_NEWS_TYPE(cp->type)))
|
||||||
|
|
||||||
extern Bool
|
|
||||||
rt_formIsSignificant(MWContext *ctxt, LO_FormElementStruct *ele_struct);
|
|
||||||
|
PRIVATE int32
|
||||||
|
prvcy_countEntryBoxes(lo_DocState *top_doc_state,
|
||||||
|
LO_FormElementStruct *ele_struct)
|
||||||
|
{
|
||||||
|
intn form_id;
|
||||||
|
lo_FormData *form_list;
|
||||||
|
lo_DocLists *doc_lists;
|
||||||
|
int32 entry_count;
|
||||||
|
LO_Element **elements;
|
||||||
|
LO_Element *element;
|
||||||
|
LO_ImageStruct *image;
|
||||||
|
int32 element_iter;
|
||||||
|
|
||||||
|
if ((top_doc_state == NULL) || (ele_struct == NULL)) return -1;
|
||||||
|
if (ele_struct->type == LO_IMAGE)
|
||||||
|
{
|
||||||
|
image = (LO_ImageStruct *)ele_struct;
|
||||||
|
form_id = image->image_attr->form_id;
|
||||||
|
} else {
|
||||||
|
form_id = ele_struct->form_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
doc_lists = lo_GetDocListsById(top_doc_state, ele_struct->layer_id);
|
||||||
|
form_list = doc_lists->form_list;
|
||||||
|
while(form_list != NULL)
|
||||||
|
{
|
||||||
|
if (form_list->id == form_id)
|
||||||
|
break;
|
||||||
|
form_list = form_list->next;
|
||||||
|
}
|
||||||
|
if (form_list == NULL) return -1;
|
||||||
|
|
||||||
|
elements = (LO_Element **)form_list->form_elements;
|
||||||
|
if (elements == NULL) return 0;
|
||||||
|
entry_count = 0;
|
||||||
|
for(element_iter = 0;
|
||||||
|
element_iter < form_list->form_ele_cnt;
|
||||||
|
element_iter++)
|
||||||
|
{
|
||||||
|
element = elements[element_iter];
|
||||||
|
if (element == NULL) continue;
|
||||||
|
if (element->type != LO_FORM_ELE) continue;
|
||||||
|
if (element->lo_form.element_data == NULL) continue;
|
||||||
|
if ((element->lo_form.element_data->type == FORM_TYPE_TEXT) &&
|
||||||
|
!(element->lo_form.element_data->ele_text.read_only))
|
||||||
|
entry_count++;
|
||||||
|
}
|
||||||
|
return entry_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PRIVATE int32
|
||||||
|
prvcy_countAreaBoxes(lo_DocState *top_doc_state,
|
||||||
|
LO_FormElementStruct *ele_struct)
|
||||||
|
{
|
||||||
|
intn form_id;
|
||||||
|
lo_FormData *form_list;
|
||||||
|
lo_DocLists *doc_lists;
|
||||||
|
int32 entry_count;
|
||||||
|
LO_Element **elements;
|
||||||
|
LO_Element *element;
|
||||||
|
LO_ImageStruct *image;
|
||||||
|
int32 element_iter;
|
||||||
|
|
||||||
|
if ((top_doc_state == NULL) || (ele_struct == NULL)) return -1;
|
||||||
|
if (ele_struct->type == LO_IMAGE)
|
||||||
|
{
|
||||||
|
image = (LO_ImageStruct *)ele_struct;
|
||||||
|
form_id = image->image_attr->form_id;
|
||||||
|
} else {
|
||||||
|
form_id = ele_struct->form_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
doc_lists = lo_GetDocListsById(top_doc_state, ele_struct->layer_id);
|
||||||
|
form_list = doc_lists->form_list;
|
||||||
|
while(form_list != NULL)
|
||||||
|
{
|
||||||
|
if (form_list->id == form_id)
|
||||||
|
break;
|
||||||
|
form_list = form_list->next;
|
||||||
|
}
|
||||||
|
if (form_list == NULL) return -1;
|
||||||
|
|
||||||
|
elements = (LO_Element **)form_list->form_elements;
|
||||||
|
if (elements == NULL) return 0;
|
||||||
|
entry_count = 0;
|
||||||
|
for(element_iter = 0;
|
||||||
|
element_iter < form_list->form_ele_cnt;
|
||||||
|
element_iter++)
|
||||||
|
{
|
||||||
|
element = elements[element_iter];
|
||||||
|
if (element == NULL) continue;
|
||||||
|
if (element->type != LO_FORM_ELE) continue;
|
||||||
|
if (element->lo_form.element_data == NULL) continue;
|
||||||
|
if ((element->lo_form.element_data->type == FORM_TYPE_TEXTAREA) &&
|
||||||
|
!(element->lo_form.element_data->ele_textarea.read_only))
|
||||||
|
entry_count++;
|
||||||
|
}
|
||||||
|
return entry_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRIVATE Bool
|
||||||
|
prvcy_formIsSignificant(MWContext *ctxt,
|
||||||
|
LO_FormElementStruct *ele_struct)
|
||||||
|
{
|
||||||
|
int32 doc_id;
|
||||||
|
lo_TopState *top_state;
|
||||||
|
|
||||||
|
doc_id = XP_DOCID(ctxt);
|
||||||
|
top_state = lo_FetchTopState(doc_id);
|
||||||
|
if (top_state == NULL) return FALSE;
|
||||||
|
|
||||||
|
return ((prvcy_countEntryBoxes(top_state->doc_state, ele_struct) > 1) ||
|
||||||
|
(prvcy_countAreaBoxes(top_state->doc_state, ele_struct) > 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns TRUE if the current page has an associated privacy policy,
|
Returns TRUE if the current page has an associated privacy policy,
|
||||||
|
@ -109,12 +228,12 @@ PRVCY_PrivacyPolicyConfirmSubmit(MWContext *ctxt,
|
||||||
LO_FormElementStruct *form_element)
|
LO_FormElementStruct *form_element)
|
||||||
{
|
{
|
||||||
History_entry *entry;
|
History_entry *entry;
|
||||||
XP_Bool value, *valueptr, savevalue;
|
XP_Bool value = FALSE, *valueptr, savevalue;
|
||||||
Bool returnvalue;
|
Bool returnvalue;
|
||||||
/*
|
|
||||||
int ret;
|
int ret;
|
||||||
char *prefname = "privacy.warn_no_privacy_policy";
|
static const char *prefname = "privacy.warn_no_policy";
|
||||||
*/
|
|
||||||
|
|
||||||
if (!ctxt) return TRUE;
|
if (!ctxt) return TRUE;
|
||||||
entry = SHIST_GetCurrent(&ctxt->hist);
|
entry = SHIST_GetCurrent(&ctxt->hist);
|
||||||
|
@ -127,7 +246,7 @@ PRVCY_PrivacyPolicyConfirmSubmit(MWContext *ctxt,
|
||||||
}
|
}
|
||||||
|
|
||||||
D(printf("Privacy Policies: Checking Significance: "));
|
D(printf("Privacy Policies: Checking Significance: "));
|
||||||
if (!rt_formIsSignificant(ctxt, form_element)) {
|
if (!prvcy_formIsSignificant(ctxt, form_element)) {
|
||||||
D(printf("failed.\n"));
|
D(printf("failed.\n"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
|
@ -136,34 +255,39 @@ PRVCY_PrivacyPolicyConfirmSubmit(MWContext *ctxt,
|
||||||
|
|
||||||
/* if we're here, this page deserves a privacy warning. */
|
/* if we're here, this page deserves a privacy warning. */
|
||||||
|
|
||||||
value = TRUE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
ret = PREF_GetBoolPref(prefname, &value);
|
ret = PREF_GetBoolPref(prefname, &value);
|
||||||
*/
|
|
||||||
|
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
savevalue = value;
|
savevalue = value;
|
||||||
valueptr = &value;
|
/* returnvalue =
|
||||||
returnvalue =
|
(int) FE_SecurityDialog(ctxt, SD_NO_PRIVACY_POLICY, valueptr); */
|
||||||
(int) FE_SecurityDialog(ctxt, SD_NO_PRIVACY_POLICY, valueptr);
|
returnvalue = (int)
|
||||||
|
FE_CheckConfirm(ctxt,
|
||||||
|
/* "Privacy Alert", */
|
||||||
|
"There is no privacy policy in effect for this form submission.\n"
|
||||||
|
"This site has not disclosed how the information you are providing\n"
|
||||||
|
"will be used. If you are concerned by this, you may want to cancel\n"
|
||||||
|
"this submission.\n",
|
||||||
|
"Show this alert next time?",
|
||||||
|
/* "Continue Submission",
|
||||||
|
"Cancel Submission",
|
||||||
|
TRUE, */
|
||||||
|
&value);
|
||||||
if (value != savevalue)
|
if (value != savevalue)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
ret = PREF_SetBoolPref(prefname, value);
|
ret = PREF_SetBoolPref(prefname, value);
|
||||||
ret = PREF_SavePrefFile();
|
ret = PREF_SavePrefFile();
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
if (!returnvalue) return FALSE;
|
if (returnvalue < 1) return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns the URL of the privacy tutorial
|
Returns the URL of the privacy tutorial
|
||||||
*/
|
*/
|
||||||
PUBLIC char *
|
PUBLIC const char *
|
||||||
PRVCY_TutorialURL()
|
PRVCY_TutorialURL()
|
||||||
{
|
{
|
||||||
return "http://people.netscape.com/morse/privacy/index.html";
|
return "http://people.netscape.com/morse/privacy/index.html";
|
||||||
|
@ -191,3 +315,20 @@ PUBLIC Bool
|
||||||
PRVCY_IsAnonymous() {
|
PRVCY_IsAnonymous() {
|
||||||
return anonymous;
|
return anonymous;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* temporary UI until FE implements this function as a single dialog box
|
||||||
|
*/
|
||||||
|
PRIVATE
|
||||||
|
XP_Bool FE_CheckConfirm (
|
||||||
|
MWContext *pContext,
|
||||||
|
char* pConfirmMessage,
|
||||||
|
char* pCheckMessage,
|
||||||
|
XP_Bool* pChecked) {
|
||||||
|
|
||||||
|
Bool result = ET_PostMessageBox(pContext, pConfirmMessage, TRUE);
|
||||||
|
*pChecked = ET_PostMessageBox (pContext, pCheckMessage, TRUE);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
/* end of temporary UI */
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче