зеркало из 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 "xp.h"
|
||||
#include "glhist.h"
|
||||
#include "receipt.h"
|
||||
#include "layout.h"
|
||||
#include "laylayer.h"
|
||||
/* #include "receipt.h" */
|
||||
|
||||
#ifdef DEBUG_dfm
|
||||
#define D(x) x
|
||||
|
@ -39,8 +41,125 @@
|
|||
#define PRVCY_ExternalContext(c) ((c->type == MWContextBrowser) || \
|
||||
(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,
|
||||
|
@ -109,12 +228,12 @@ PRVCY_PrivacyPolicyConfirmSubmit(MWContext *ctxt,
|
|||
LO_FormElementStruct *form_element)
|
||||
{
|
||||
History_entry *entry;
|
||||
XP_Bool value, *valueptr, savevalue;
|
||||
XP_Bool value = FALSE, *valueptr, savevalue;
|
||||
Bool returnvalue;
|
||||
/*
|
||||
|
||||
int ret;
|
||||
char *prefname = "privacy.warn_no_privacy_policy";
|
||||
*/
|
||||
static const char *prefname = "privacy.warn_no_policy";
|
||||
|
||||
|
||||
if (!ctxt) return TRUE;
|
||||
entry = SHIST_GetCurrent(&ctxt->hist);
|
||||
|
@ -127,7 +246,7 @@ PRVCY_PrivacyPolicyConfirmSubmit(MWContext *ctxt,
|
|||
}
|
||||
|
||||
D(printf("Privacy Policies: Checking Significance: "));
|
||||
if (!rt_formIsSignificant(ctxt, form_element)) {
|
||||
if (!prvcy_formIsSignificant(ctxt, form_element)) {
|
||||
D(printf("failed.\n"));
|
||||
return TRUE;
|
||||
} else {
|
||||
|
@ -136,34 +255,39 @@ PRVCY_PrivacyPolicyConfirmSubmit(MWContext *ctxt,
|
|||
|
||||
/* if we're here, this page deserves a privacy warning. */
|
||||
|
||||
value = TRUE;
|
||||
|
||||
/*
|
||||
ret = PREF_GetBoolPref(prefname, &value);
|
||||
*/
|
||||
|
||||
if (value)
|
||||
{
|
||||
savevalue = value;
|
||||
valueptr = &value;
|
||||
returnvalue =
|
||||
(int) FE_SecurityDialog(ctxt, SD_NO_PRIVACY_POLICY, valueptr);
|
||||
/* returnvalue =
|
||||
(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)
|
||||
{
|
||||
/*
|
||||
ret = PREF_SetBoolPref(prefname, value);
|
||||
ret = PREF_SavePrefFile();
|
||||
*/
|
||||
}
|
||||
if (!returnvalue) return FALSE;
|
||||
if (returnvalue < 1) return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns the URL of the privacy tutorial
|
||||
*/
|
||||
PUBLIC char *
|
||||
PUBLIC const char *
|
||||
PRVCY_TutorialURL()
|
||||
{
|
||||
return "http://people.netscape.com/morse/privacy/index.html";
|
||||
|
@ -191,3 +315,20 @@ PUBLIC Bool
|
|||
PRVCY_IsAnonymous() {
|
||||
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 */
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче