Removed privacy dependencies on transaction receipt functions.

This file does not yet build in the default tree configuration.
This commit is contained in:
dfm%netscape.com 1998-07-29 22:39:12 +00:00
Родитель c803d6b8ea
Коммит 18e206d931
1 изменённых файлов: 161 добавлений и 20 удалений

Просмотреть файл

@ -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 */