Java 类com.facebook.stetho.inspector.protocol.module.Console 实例源码

项目:stetho    文件:ResponseHandlingInputStream.java   
@Override
public void close() throws IOException {
  try {
    long bytesRead = 0;
    if (!mEofSeen) {
      byte[] buffer = new byte[BUFFER_SIZE];
      int count;
      while ((count = this.read(buffer)) != -1) {
        bytesRead += count;
      }
    }
    if (bytesRead > 0) {
      CLog.writeToConsole(
          mNetworkPeerManager,
          Console.MessageLevel.ERROR,
          Console.MessageSource.NETWORK,
          "There were " + String.valueOf(bytesRead) + " bytes that were not consumed while "
          + "processing request " + mRequestId);
    }
  } finally {
    super.close();
    closeOutputStreamQuietly();
  }
}
项目:stetho    文件:ResponseHandlingInputStream.java   
/**
 * Attempts to close all the output stream, and swallows any exceptions.
 */
private synchronized void closeOutputStreamQuietly() {
  if (!mClosed) {
    try {
      mOutputStream.close();
      reportDecodedSizeIfApplicable();
    } catch (IOException e) {
      CLog.writeToConsole(
          mNetworkPeerManager,
          Console.MessageLevel.ERROR,
          Console.MessageSource.NETWORK,
          "Could not close the output stream" + e);
    } finally {
      mClosed = true;
    }
  }
}
项目:stetho    文件:NetworkEventReporterImpl.java   
@Nullable
private static String readBodyAsString(
    NetworkPeerManager peerManager,
    InspectorRequest request) {
  try {
    byte[] body = request.body();
    if (body != null) {
      return new String(body, Utf8Charset.INSTANCE);
    }
  } catch (IOException | OutOfMemoryError e) {
    CLog.writeToConsole(
        peerManager,
        Console.MessageLevel.WARNING,
        Console.MessageSource.NETWORK,
        "Could not reproduce POST body: " + e);
  }
  return null;
}
项目:stetho    文件:CLog.java   
public static void writeToConsole(
    ChromePeerManager chromePeerManager,
    Console.MessageLevel logLevel,
    Console.MessageSource messageSource,
    String messageText) {
  // Send to logcat to increase the chances that a developer will notice :)
  LogRedirector.d(TAG, messageText);

  Console.ConsoleMessage message = new Console.ConsoleMessage();
  message.source = messageSource;
  message.level = logLevel;
  message.text = messageText;
  Console.MessageAddedRequest messageAddedRequest = new Console.MessageAddedRequest();
  messageAddedRequest.message = message;
  chromePeerManager.sendNotificationToPeers("Console.messageAdded", messageAddedRequest);
}
项目:stetho    文件:ResponseHandlingInputStreamTest.java   
@Test
public void testReadOneByte() throws IOException {
  int result = mResponseHandlingInputStream.read();
  assertEquals(TEST_RESPONSE_BODY[0], positionToByte(result));
  assertBufferMatchesResponseBody(mTestOutputStream.toByteArray(), 1);

  PowerMockito.mockStatic(CLog.class);
  PowerMockito.doNothing().when(CLog.class);
  CLog.writeToConsole(
      Mockito.any(ChromePeerManager.class),
      Mockito.any(Console.MessageLevel.class),
      Mockito.any(Console.MessageSource.class),
      Mockito.anyString());
  mResponseHandlingInputStream.close();
  PowerMockito.verifyStatic();
}
项目:stetho    文件:ResponseHandlingInputStreamTest.java   
@Test
public void testReadPartial() throws IOException {
  int numBytesToRead = TEST_RESPONSE_BODY.length / 2;
  byte[] tempReadingBuffer = new byte[numBytesToRead];
  int result = mResponseHandlingInputStream.read(tempReadingBuffer, 0, numBytesToRead);
  assertEquals(numBytesToRead, result);
  assertBufferMatchesResponseBody(tempReadingBuffer, numBytesToRead);
  assertBufferMatchesResponseBody(mTestOutputStream.toByteArray(), numBytesToRead);

  PowerMockito.mockStatic(CLog.class);
  PowerMockito.doNothing().when(CLog.class);
  CLog.writeToConsole(
      Mockito.any(ChromePeerManager.class),
      Mockito.any(Console.MessageLevel.class),
      Mockito.any(Console.MessageSource.class),
      Mockito.anyString());
  mResponseHandlingInputStream.close();
  PowerMockito.verifyStatic();
}
项目:stetho    文件:ResponseHandlingInputStreamTest.java   
@Test
public void testSkipFew() throws IOException {
  long numBytesToSkip = TEST_RESPONSE_BODY.length / 2;
  long result = mResponseHandlingInputStream.skip(numBytesToSkip);
  assertEquals(numBytesToSkip, result);
  assertBufferMatchesResponseBody(mTestOutputStream.toByteArray(), (int) numBytesToSkip);

  PowerMockito.mockStatic(CLog.class);
  PowerMockito.doNothing().when(CLog.class);
  CLog.writeToConsole(
      Mockito.any(ChromePeerManager.class),
      Mockito.any(Console.MessageLevel.class),
      Mockito.any(Console.MessageSource.class),
      Mockito.anyString());
  mResponseHandlingInputStream.close();
  PowerMockito.verifyStatic();
}
项目:stetho    文件:JsRuntimeReplFactoryBuilder.java   
private @NonNull ScriptableObject initJsScope(@NonNull Context jsContext) {
  // Set the main Rhino goodies
  ImporterTopLevel importerTopLevel = new ImporterTopLevel(jsContext);
  ScriptableObject scope = jsContext.initStandardObjects(importerTopLevel, false);

  ScriptableObject.putProperty(scope, "context", Context.javaToJS(mContext, scope));

  try {
    importClasses(jsContext, scope);
    importPackages(jsContext, scope);
    importConsole(scope);
    importVariables(scope);
    importFunctions(scope);
  } catch (StethoJsException e) {
    String message = String.format("%s\n%s", e.getMessage(), Log.getStackTraceString(e));
    LogUtil.e(e, message);
    CLog.writeToConsole(Console.MessageLevel.ERROR, Console.MessageSource.JAVASCRIPT, message);
  }

  return scope;
}
项目:Stetho-Couchbase    文件:CouchbasePeerManager.java   
Database.ExecuteSQLResponse executeSQL(String databaseId, String query) throws JSONException {
    Timber.d("executeSQL: %s, %s", databaseId, query);

    Database.ExecuteSQLResponse response = new Database.ExecuteSQLResponse();

    Matcher matcher = mPattern.matcher(query);
    if (!matcher.find()) {
        return response;
    }

    String docId = matcher.group(1);
    Timber.d("Parsed doc ID: %s", docId);

    Map<String, String> map = getDocument(databaseId, docId);
    response.columnNames = COLUMN_NAMES;
    response.values = new ArrayList<>();
    for (Map.Entry<String, String> entry : map.entrySet()) {
        final String key = entry.getKey();
        if (!mShowMetadata && key.substring(0,1).equals("_")) {
            continue;
        }
        response.values.add(key);
        response.values.add(entry.getValue());
    }

    // Log to console
    CLog.writeToConsole(Console.MessageLevel.DEBUG, Console.MessageSource.JAVASCRIPT, new JSONObject(map).toString(4));

    return response;
}
项目:stetho    文件:ResponseHandlingInputStream.java   
private void handleIOExceptionWritingToStream(IOException e) {
  CLog.writeToConsole(
      mNetworkPeerManager,
      Console.MessageLevel.ERROR,
      Console.MessageSource.NETWORK,
      "Could not write response body to the stream " + e);

  closeOutputStreamQuietly();
}
项目:stetho    文件:NetworkEventReporterImpl.java   
@Override
public void requestWillBeSent(InspectorRequest request) {
  NetworkPeerManager peerManager = getPeerManagerIfEnabled();
  if (peerManager != null) {
    Network.Request requestJSON = new Network.Request();
    requestJSON.url = request.url();
    requestJSON.method = request.method();
    requestJSON.headers = formatHeadersAsJSON(request);
    requestJSON.postData = readBodyAsString(peerManager, request);

    // Hack to use the initiator of SCRIPT to generate a fake call stack that includes
    // the request's "friendly" name.
    String requestFriendlyName = request.friendlyName();
    Integer requestPriority = request.friendlyNameExtra();
    Network.Initiator initiatorJSON = new Network.Initiator();
    initiatorJSON.type = Network.InitiatorType.SCRIPT;
    initiatorJSON.stackTrace = new ArrayList<Console.CallFrame>();
    initiatorJSON.stackTrace.add(new Console.CallFrame(requestFriendlyName,
        requestFriendlyName,
        requestPriority != null ? requestPriority : 0 /* lineNumber */,
        0 /* columnNumber */));

    Network.RequestWillBeSentParams params = new Network.RequestWillBeSentParams();
    params.requestId = request.id();
    params.frameId = "1";
    params.loaderId = "1";
    params.documentURL = request.url();
    params.request = requestJSON;
    params.timestamp = stethoNow() / 1000.0;
    params.initiator = initiatorJSON;
    params.redirectResponse = null;

    // Type is now required as of at least WebKit Inspector rev @188492.  If you don't send
    // it, Chrome will refuse to draw the row in the Network tab until the response is
    // received (providing the type).  This delay is very noticable on slow networks.
    params.type = Page.ResourceType.OTHER;

    peerManager.sendNotificationToPeers("Network.requestWillBeSent", params);
  }
}
项目:stetho    文件:CLog.java   
public static void writeToConsole(
    Console.MessageLevel logLevel,
    Console.MessageSource messageSource,
    String messageText
) {
  ConsolePeerManager peerManager = ConsolePeerManager.getInstanceOrNull();
  if (peerManager == null) {
    return;
  }

  writeToConsole(peerManager, logLevel, messageSource, messageText);
}
项目:stetho    文件:StethoTree.java   
@Override
protected void log(int priority, String tag, String message, Throwable t) {

  ConsolePeerManager peerManager = ConsolePeerManager.getInstanceOrNull();
  if (peerManager == null) {
    return;
  }

  Console.MessageLevel logLevel;

  switch (priority) {
    case Log.VERBOSE:
    case Log.DEBUG:
      logLevel = Console.MessageLevel.DEBUG;
      break;
    case Log.INFO:
      logLevel = Console.MessageLevel.LOG;
      break;
    case Log.WARN:
      logLevel = Console.MessageLevel.WARNING;
      break;
    case Log.ERROR:
    case Log.ASSERT:
      logLevel = Console.MessageLevel.ERROR;
      break;
    default:
      logLevel = Console.MessageLevel.LOG;
  }

  CLog.writeToConsole(
      logLevel,
      Console.MessageSource.OTHER,
      message
  );
}
项目:AxoloTL    文件:TaskLibStetho.java   
public static void init(Gson gsonInstance) {
    CLog.writeToConsole(Console.MessageLevel.LOG, Console.MessageSource.OTHER, "TaskLibStetho.init");
    TaskLibStetho.gsonInstance = gsonInstance;
    TaskEventListener.setInstance(new StethoEventListener());
}
项目:AxoloTL    文件:StethoEventListener.java   
@Override
protected void onExecuteCalled(BaseTask task, Object sourceAndTarget) {
    CLog.writeToConsole(Console.MessageLevel.LOG, Console.MessageSource.OTHER, "onExecuteCalled");
    bridge.reportTaskExecuteCalled(task, sourceAndTarget);
}
项目:AxoloTL    文件:StethoEventListener.java   
@Override
protected void onResult(BaseTask task) {
    CLog.writeToConsole(Console.MessageLevel.LOG, Console.MessageSource.OTHER, "onResult");
    bridge.reportTaskFinished(task);
}
项目:stetho    文件:Stetho.java   
public Iterable<ChromeDevtoolsDomain> finish() {
  provideIfDesired(new Console());
  provideIfDesired(new Debugger());
  DocumentProviderFactory documentModel = resolveDocumentProvider();
  if (documentModel != null) {
    Document document = new Document(documentModel);
    provideIfDesired(new DOM(document));
    provideIfDesired(new CSS(document));
  }
  provideIfDesired(new DOMStorage(mContext));
  provideIfDesired(new HeapProfiler());
  provideIfDesired(new Inspector());
  provideIfDesired(new Network(mContext));
  provideIfDesired(new Page(mContext));
  provideIfDesired(new Profiler());
  provideIfDesired(
      new Runtime(
          mRuntimeRepl != null ?
          mRuntimeRepl :
          new RhinoDetectingRuntimeReplFactory(mContext)));
  provideIfDesired(new Worker());
  if (Build.VERSION.SDK_INT >= DatabaseConstants.MIN_API_LEVEL) {
    Database database = new Database();
    boolean hasSqliteDatabaseDriver = false;
    if (mDatabaseDrivers != null) {
      for (DatabaseDriver2 databaseDriver : mDatabaseDrivers) {
        database.add(databaseDriver);
        if (databaseDriver instanceof SqliteDatabaseDriver) {
          hasSqliteDatabaseDriver = true;
        }
      }
    }
    if (!hasSqliteDatabaseDriver && !mExcludeSqliteDatabaseDriver) {
      database.add(
          new SqliteDatabaseDriver(mContext,
              mDatabaseFilesProvider != null ?
                  mDatabaseFilesProvider :
                  new DefaultDatabaseFilesProvider(mContext),
              new DefaultDatabaseConnectionProvider()));
    }
    provideIfDesired(database);
  }
  return mDelegate.finish();
}
项目:stetho    文件:NetworkEventReporterImpl.java   
@Override
public InputStream interpretResponseStream(
    String requestId,
    @Nullable String contentType,
    @Nullable String contentEncoding,
    @Nullable InputStream availableInputStream,
    ResponseHandler responseHandler) {
  NetworkPeerManager peerManager = getPeerManagerIfEnabled();
  if (peerManager != null) {
    if (availableInputStream == null) {
      responseHandler.onEOF();
      return null;
    }
    Page.ResourceType resourceType =
        contentType != null ?
            getResourceTypeHelper().determineResourceType(contentType) :
            null;

    // There's this weird logic at play that only knows how to base64 decode certain kinds of
    // resources.
    boolean base64Encode = false;
    if (resourceType != null && resourceType == Page.ResourceType.IMAGE) {
      base64Encode = true;
    }

    try {
      OutputStream fileOutputStream =
          peerManager.getResponseBodyFileManager().openResponseBodyFile(
              requestId,
              base64Encode);
      return DecompressionHelper.teeInputWithDecompression(
          peerManager,
          requestId,
          availableInputStream,
          fileOutputStream,
          contentEncoding,
          responseHandler);
    } catch (IOException e) {
      CLog.writeToConsole(
          peerManager,
          Console.MessageLevel.ERROR,
          Console.MessageSource.NETWORK,
          "Error writing response body data for request #" + requestId);
    }
  }
  return availableInputStream;
}