tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

GeckoViewContentChannel.cpp (1494B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "GeckoViewContentChannel.h"
      8 #include "GeckoViewInputStream.h"
      9 #include "mozilla/java/ContentInputStreamWrappers.h"
     10 
     11 using namespace mozilla;
     12 
     13 GeckoViewContentChannel::GeckoViewContentChannel(nsIURI* aURI) {
     14  SetURI(aURI);
     15  SetOriginalURI(aURI);
     16 }
     17 
     18 NS_IMETHODIMP
     19 GeckoViewContentChannel::OpenContentStream(bool aAsync,
     20                                           nsIInputStream** aResult,
     21                                           nsIChannel** aChannel) {
     22  MOZ_ASSERT(XRE_IsParentProcess());
     23 
     24  nsCOMPtr<nsIURI> uri;
     25  nsresult rv = GetURI(getter_AddRefs(uri));
     26  NS_ENSURE_SUCCESS(rv, NS_ERROR_MALFORMED_URI);
     27 
     28  nsAutoCString spec;
     29  rv = uri->GetSpec(spec);
     30  NS_ENSURE_SUCCESS(rv, rv);
     31 
     32  bool isReadable = GeckoViewContentInputStream::isReadable(spec);
     33  if (!isReadable) {
     34    return NS_ERROR_FILE_NOT_FOUND;
     35  }
     36 
     37  nsCOMPtr<nsIInputStream> inputStream;
     38  rv = GeckoViewContentInputStream::GetInstance(
     39      spec, GeckoViewContentInputStream::Allow::PDFOnly,
     40      getter_AddRefs(inputStream));
     41  NS_ENSURE_SUCCESS(rv, rv);
     42 
     43  if (NS_WARN_IF(!inputStream)) {
     44    return NS_ERROR_MALFORMED_URI;
     45  }
     46 
     47  inputStream.forget(aResult);
     48 
     49  return NS_OK;
     50 }