Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_BASE_MIME_SNIFFER_H__
      6 #define NET_BASE_MIME_SNIFFER_H__
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 class GURL;
     12 
     13 namespace net {
     14 
     15 // The maximum number of bytes used by any internal mime sniffing routine. May
     16 // be useful for callers to determine an efficient buffer size to pass to
     17 // |SniffMimeType|.
     18 // This must be updated if any internal sniffing routine needs more bytes.
     19 const int kMaxBytesToSniff = 1024;
     20 
     21 // Examine the URL and the mime_type and decide whether we should sniff a
     22 // replacement mime type from the content.
     23 //
     24 // @param url The URL from which we obtained the content.
     25 // @param mime_type The current mime type, e.g. from the Content-Type header.
     26 // @return Returns true if we should sniff the mime type.
     27 bool ShouldSniffMimeType(const GURL& url, const std::string& mime_type);
     28 
     29 // Guess a mime type from the first few bytes of content an its URL.  Always
     30 // assigns |result| with its best guess of a mime type.
     31 //
     32 // @param content A buffer containing the bytes to sniff.
     33 // @param content_size The number of bytes in the |content| buffer.
     34 // @param url The URL from which we obtained this content.
     35 // @param type_hint The current mime type, e.g. from the Content-Type header.
     36 // @param result Address at which to place the sniffed mime type.
     37 // @return Returns true if we have enough content to guess the mime type.
     38 bool SniffMimeType(const char* content, size_t content_size,
     39                    const GURL& url, const std::string& type_hint,
     40                    std::string* result);
     41 
     42 }  // namespace net
     43 
     44 #endif  // NET_BASE_MIME_SNIFFER_H__
     45