本文整理汇总了C++中ContentType::parameter方法的典型用法代码示例。如果您正苦于以下问题:C++ ContentType::parameter方法的具体用法?C++ ContentType::parameter怎么用?C++ ContentType::parameter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ContentType
的用法示例。
在下文中一共展示了ContentType::parameter方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: supportsType
MediaPlayer::SupportsType MediaPlayer::supportsType(ContentType contentType)
{
String type = contentType.type();
String codecs = contentType.parameter("codecs");
MediaPlayerFactory* engine = chooseBestEngineForTypeAndCodecs(type, codecs);
if (!engine)
return IsNotSupported;
return engine->supportsTypeAndCodecs(type, codecs);
}
示例2: load
bool MediaPlayer::load(const URL& url, const ContentType& contentType, MediaSourcePrivateClient* mediaSource)
{
ASSERT(mediaSource);
m_mediaSource = mediaSource;
m_contentMIMEType = contentType.type().lower();
m_contentTypeCodecs = contentType.parameter(codecs());
m_url = url;
m_keySystem = "";
m_contentMIMETypeWasInferredFromExtension = false;
loadWithNextMediaEngine(0);
return m_currentMediaEngine;
}
示例3: asText
EString Bodypart::asText( bool avoidUtf8 ) const
{
EString r;
Codec *c = 0;
ContentType *ct = header()->contentType();
if ( ct && !ct->parameter( "charset" ).isEmpty() )
c = Codec::byName( ct->parameter( "charset" ) );
if ( !c )
c = new AsciiCodec;
if ( !children()->isEmpty() )
appendMultipart( r, avoidUtf8 );
else if ( !header()->contentType() ||
header()->contentType()->type() == "text" )
r = c->fromUnicode( text() );
else
r = d->data.e64( 72 );
return r;
}
示例4: load
bool MediaPlayer::load(const URL& url, const ContentType& contentType, MediaSourcePrivateClient* mediaSource)
{
ASSERT(!m_reloadTimer.isActive());
ASSERT(mediaSource);
m_mediaSource = mediaSource;
m_contentMIMEType = contentType.type().convertToASCIILowercase();
m_contentTypeCodecs = contentType.parameter(codecs());
m_url = url;
m_keySystem = emptyString();
m_contentMIMETypeWasInferredFromExtension = false;
loadWithNextMediaEngine(0);
return m_currentMediaEngine;
}
示例5: addSourceBuffer
MediaSourcePrivate::AddStatus MockMediaSourcePrivate::addSourceBuffer(const ContentType& contentType, RefPtr<SourceBufferPrivate>& outPrivate)
{
MediaEngineSupportParameters parameters;
parameters.isMediaSource = true;
parameters.type = contentType.type();
parameters.codecs = contentType.parameter(ASCIILiteral("codecs"));
if (MockMediaPlayerMediaSource::supportsType(parameters) == MediaPlayer::IsNotSupported)
return NotSupported;
m_sourceBuffers.append(MockSourceBufferPrivate::create(this));
outPrivate = m_sourceBuffers.last();
return Ok;
}
示例6: supportsType
MediaPlayer::SupportsType MediaPlayer::supportsType(const ContentType& contentType)
{
String type = contentType.type().lower();
String typeCodecs = contentType.parameter(codecs());
// 4.8.10.3 MIME types - The canPlayType(type) method must return the empty string if type is a type that the
// user agent knows it cannot render or is the type "application/octet-stream"
if (type == applicationOctetStream())
return IsNotSupported;
MediaPlayerFactory* engine = bestMediaEngineForTypeAndCodecs(type, typeCodecs);
if (!engine)
return IsNotSupported;
return engine->supportsTypeAndCodecs(type, typeCodecs);
}
示例7: if
void Message::fix8BitHeaderFields()
{
EString charset;
EString fallback = "us-ascii";
bool conflict = false;
List<Bodypart>::Iterator i( allBodyparts() );
while ( i ) {
ContentType * ct = 0;
if ( i->header() )
ct = i->header()->contentType();
if ( ct && ct->type() == "text" ) {
EString cs = ct->parameter( "charset" ).lower();
if ( cs == "windows-1252" )
cs = "iso-8859-1";
if ( cs.isEmpty() )
; // no conclusion from this part
else if ( charset.isEmpty() )
charset = cs; // use this charset...?
else if ( cs != charset )
conflict = true;
if ( ct && ct->subtype() == "html" )
fallback = "iso-8859-1";
}
++i;
}
Codec * c = 0;
if ( !charset.isEmpty() )
c = Codec::byName( charset );
else
c = Codec::byString( badFields( header() ) );
if ( !c )
c = Codec::byName( fallback );
if ( conflict || !c )
c = new AsciiCodec;
header()->fix8BitFields( c );
i = allBodyparts()->first();
while ( i ) {
if ( i->header() )
i->header()->fix8BitFields( c );
if ( i->message() && i->message()->header() )
i->message()->header()->fix8BitFields( c );
++i;
}
}
示例8: load
void MediaPlayer::load(const String& url, const ContentType& contentType)
{
String type = contentType.type();
String codecs = contentType.parameter("codecs");
// if we don't know the MIME type, see if the extension can help
if (type.isEmpty() || type == "application/octet-stream" || type == "text/plain") {
int pos = url.reverseFind('.');
if (pos >= 0) {
String extension = url.substring(pos + 1);
String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension);
if (!mediaType.isEmpty())
type = mediaType;
}
}
MediaPlayerFactory* engine = 0;
if (!type.isEmpty())
engine = chooseBestEngineForTypeAndCodecs(type, codecs);
// if we didn't find an engine that claims the MIME type, just use the first engine
if (!engine && !installedMediaEngines().isEmpty())
engine = installedMediaEngines()[0];
// don't delete and recreate the player unless it comes from a different engine
if (engine && m_currentMediaEngine != engine) {
m_currentMediaEngine = engine;
m_private.clear();
m_private.set(engine->constructor(this));
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
m_private->setMediaPlayerProxy(m_playerProxy);
#endif
m_private->setAutobuffer(autobuffer());
m_private->setPreservesPitch(preservesPitch());
}
if (m_private)
m_private->load(url);
else
m_private.set(createNullMediaPlayer(this));
}
示例9: appendMultipart
void Multipart::appendMultipart( EString &r, bool avoidUtf8 ) const
{
ContentType * ct = header()->contentType();
EString delim = ct->parameter( "boundary" );
if ( ! this )
::log( "Fetch::bodyStructure - FATAL, cannnot determine message", Log::Error );
else {
if ( this->parent() && this->parent()->isMessage() ) {
Message *msg = (Message *)this->parent();
if ( msg->hasPGPsignedPart() ) {
appendAnyPart( r, children()->first(), ct, avoidUtf8 );
return;
}
} else if ( this->isMessage() ) {
Message *msg = (Message *)this;
if ( msg->hasPGPsignedPart() ) {
appendAnyPart( r, children()->first(), ct, avoidUtf8 );
return;
}
}
}
List<Bodypart>::Iterator it( children() );
r.append( "--" + delim );
while ( it ) {
r.append( crlf );
Bodypart * bp = it;
++it;
r.append( bp->header()->asText( avoidUtf8 ) );
r.append( crlf );
appendAnyPart( r, bp, ct, avoidUtf8 );
r.append( crlf );
r.append( "--" );
r.append( delim );
}
r.append( "--" );
r.append( crlf );
}
示例10: load
bool MediaPlayer::load(const URL& url, const ContentType& contentType, const String& keySystem)
{
ASSERT(!m_reloadTimer.isActive());
m_contentMIMEType = contentType.type().lower();
m_contentTypeCodecs = contentType.parameter(codecs());
m_url = url;
m_keySystem = keySystem.lower();
m_contentMIMETypeWasInferredFromExtension = false;
#if ENABLE(MEDIA_SOURCE)
m_mediaSource = nullptr;
#endif
#if ENABLE(MEDIA_STREAM)
m_mediaStream = nullptr;
#endif
// If the MIME type is missing or is not meaningful, try to figure it out from the URL.
if (m_contentMIMEType.isEmpty() || m_contentMIMEType == applicationOctetStream() || m_contentMIMEType == textPlain()) {
if (m_url.protocolIsData())
m_contentMIMEType = mimeTypeFromDataURL(m_url.string());
else {
String lastPathComponent = url.lastPathComponent();
size_t pos = lastPathComponent.reverseFind('.');
if (pos != notFound) {
String extension = lastPathComponent.substring(pos + 1);
String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension);
if (!mediaType.isEmpty()) {
m_contentMIMEType = mediaType;
m_contentMIMETypeWasInferredFromExtension = true;
}
}
}
}
loadWithNextMediaEngine(0);
return m_currentMediaEngine;
}
示例11: parse
void Message::parse( const EString & rfc2822 )
{
uint i = 0;
children()->clear();
setHeader( parseHeader( i, rfc2822.length(), rfc2822, Header::Rfc2822 ) );
header()->repair();
header()->repair( this, rfc2822.mid( i ) );
ContentType * ct = header()->contentType();
if ( ct && ct->type() == "multipart" ) {
Bodypart::parseMultipart( i, rfc2822.length(), rfc2822,
ct->parameter( "boundary" ),
ct->subtype() == "digest",
children(), this );
}
else {
Bodypart * bp = Bodypart::parseBodypart( i, rfc2822.length(), rfc2822,
header(), this );
children()->append( bp );
}
fix8BitHeaderFields();
header()->simplify();
EString e = d->error;
recomputeError();
if ( d->error.isEmpty() )
d->error = e;
if ( !d->error.isEmpty() )
return;
setAddressesFetched();
setHeadersFetched();
setBodiesFetched();
}
示例12: if
Bodypart * Bodypart::parseBodypart( uint start, uint end,
const EString & rfc2822,
Header * h, Multipart * parent )
{
if ( rfc2822[start] == 13 )
start++;
if ( rfc2822[start] == 10 )
start++;
Bodypart * bp = new Bodypart;
bp->setParent( parent );
bp->setHeader( h );
EString body;
if ( end > start )
body = rfc2822.mid( start, end-start );
if ( !body.contains( '=' ) ) {
// sometimes people send c-t-e: q-p _and_ c-t-e: 7bit or 8bit.
// if they are equivalent we can accept it.
uint i = 0;
bool any = false;
HeaderField * f = 0;
while ( (f=h->field(HeaderField::ContentTransferEncoding,i)) != 0 ) {
if ( ((ContentTransferEncoding*)f)->encoding() == EString::QP )
any = true;
i++;
}
if ( any && i > 1 )
h->removeField( HeaderField::ContentTransferEncoding );
}
EString::Encoding e = EString::Binary;
ContentTransferEncoding * cte = h->contentTransferEncoding();
if ( cte )
e = cte->encoding();
if ( !body.isEmpty() ) {
if ( e == EString::Base64 || e == EString::Uuencode )
body = body.decoded( e );
else
body = body.crlf().decoded( e );
}
ContentType * ct = h->contentType();
if ( !ct ) {
switch ( h->defaultType() ) {
case Header::TextPlain:
h->add( "Content-Type", "text/plain" );
break;
case Header::MessageRfc822:
h->add( "Content-Type", "message/rfc822" );
break;
}
ct = h->contentType();
}
if ( ct->type() == "text" ) {
bool specified = false;
bool unknown = false;
Codec * c = 0;
if ( ct ) {
EString csn = ct->parameter( "charset" );
if ( csn.lower() == "default" )
csn = "";
if ( !csn.isEmpty() )
specified = true;
c = Codec::byName( csn );
if ( !c )
unknown = true;
if ( c && c->name().lower() == "us-ascii" ) {
// Some MTAs appear to say this in case there is no
// Content-Type field - without checking whether the
// body actually is ASCII. If it isn't, we'd better
// call our charset guesser.
(void)c->toUnicode( body );
if ( !c->valid() )
specified = false;
// Not pretty.
}
}
if ( !c )
c = new AsciiCodec;
bp->d->hasText = true;
bp->d->text = c->toUnicode( body.crlf() );
if ( c->name() == "GB2312" || c->name() == "ISO-2022-JP" ||
c->name() == "KS_C_5601-1987" ) {
// undefined code point usage in GB2312 spam is much too
// common. (GB2312 spam is much too common, but that's
// another matter.) Gb2312Codec turns all undefined code
// points into U+FFFD, so here, we can take the unicode
// form and say it's the canonical form. when a client
// later reads the message, it gets the text in unicode,
// including U+FFFD.
bool bad = !c->valid();
// the header may contain some unencoded gb2312. we bang
// it by hand, ignoring errors.
//.........这里部分代码省略.........