Beispiel #1
0
FontDisplayerPeerObject::
FontDisplayerPeerObject(const char *dlmName)
	: dlm(dlmName), mimeList(NULL), deleted(0), disabled(0), native(-1),
	  streamCount(0), fhList(NULL), unloadTimerId(NULL)
{
	fpType = FontDisplayerPeerObject::WF_FP_DYNAMIC;

	fontDisplayer = NULL;
	displayerName = NULL;
	displayerDescription = NULL;

	if (dlm.status() < 0)
	{
		deleted = 1;
		return;
	}

#ifdef DEBUG
	// Don't load in purified versions of libraries.
	if(XP_STRSTR(dlmName, "_pure_")) {
		XP_ASSERT(0);
		deleted = 1;
		return;
	}
#endif

	if (load() < 0)
	{
		deleted = 1;
		return;
	}
	displayerName = CopyString(nffp_Name(fontDisplayer, NULL));
	displayerDescription = CopyString(nffp_Description(fontDisplayer,NULL));
	
#if defined(XP_WIN) && !defined(WIN32)
    // Win16 It seems the const char * assignment doesn't work.
	char mimeString[256];
	*mimeString = '\0';
	strcpy(mimeString, nffp_EnumerateMimeTypes(fontDisplayer, NULL));
#else
	const char *mimeString = nffp_EnumerateMimeTypes(fontDisplayer, NULL);
#endif
	if (mimeString && *mimeString )
	{
		mimeList.reconstruct(mimeString);
		registerConverters();
	}
}
Beispiel #2
0
PUBLIC NET_StreamClass *
CRAWL_CrawlerConverter(int format_out,
						void *data_object,
						URL_Struct *URL_s,
						MWContext  *window_id)
{
#if defined(XP_MAC)
#pragma unused(format_out, data_object)
#endif
	NET_StreamClass *stream = NULL;

	crawl_page_scan_stream *obj;

	TRACEMSG(("Setting up display stream. Have URL: %s\n", URL_s->address));

	XP_TRACE(("CRAWL_CrawlerConverter: %d %s", URL_s->server_status, URL_s->address));

	if (URL_s->SARCache != NULL) {
		/* if the content length would exceed the cache limit, don't convert this */
		if (((uint32)URL_s->content_length >= (URL_s->SARCache->MaxSize - URL_s->SARCache->DiskCacheSize)) &&
			((uint32)URL_s->content_length < BOGUS_CONTENT_LENGTH)) {
			CRAWL_PageInfo page = URL_s->owner_data;
			XP_TRACE(("not converting %s", URL_s->address));
			if ((page->scan_complete_func != NULL) && (page->page_owner != NULL)) {
				page->scan_complete_func(page->page_owner, page);
				return(NULL);
			}
		}
	}

	stream = XP_NEW(NET_StreamClass);
	if(stream == NULL)
		return(NULL);

	obj = XP_NEW(crawl_page_scan_stream);
	if (obj == NULL)
	  {
		XP_FREE(stream);
		return(NULL);
	  }
	obj->parse_obj = CRAWL_MakeParseObj();			/* this object used to parse the page and destroyed 
												in completion or abort function */
	if (obj->parse_obj == NULL) return(NULL);
	obj->page = URL_s->owner_data;				/* this data was set in crawl_makePage */
	obj->page->lastModified = URL_s->last_modified;
	/* if there was a server error, read but don't parse the document */
	if ((URL_s->server_status >= 400) ||
		/* don't attempt to parse non-html */
		((XP_STRSTR(URL_s->content_type, TEXT_HTML) == NULL) &&
		 (XP_STRSTR(URL_s->content_type, INTERNAL_PARSER) == NULL))) {
		/* URL_s->dont_cache = PR_FALSE; */
		obj->page->dontFollow = PR_TRUE;
	}

	stream->name           = "Crawler Converter";
	stream->complete       = (MKStreamCompleteFunc) crawl_PageScanConvComplete;
	stream->abort          = (MKStreamAbortFunc) crawl_PageScanConvAbort;
	stream->put_block      = (MKStreamWriteFunc) crawl_PageScanConvPut;
	stream->is_write_ready = (MKStreamWriteReadyFunc) crawl_PageScanConvWriteReady;
	stream->data_object    = obj;  /* document info object */
	stream->window_id      = window_id;
	return(stream);
}