anchor.diff:  
   onBeforeRequestHandler(Map data) {
     if (data["method"] == "GET") {
  -    processGETMessage(data);
  +    processSamlRedirectBindingMessage(data);
     }
     else if (data["method"] == "POST") {
  -    processPOSTMessage(data);
  +    processSamlPostBindingMessage(data);
     }
     else {
  -    // Ignore
  +    // Ignore (not supported or not our business)
     }
   }
   
  
positive.code:   window.localStorage["messages"] = JSON.encode(storedMessages);
  }
  
  void processPOSTMessage(Map data) {
    Map body = data["requestBody"];
    if (body != null) {
      Map formData = body["formData"];
  
      if (formData != null) {
        List<String> responseList = formData["SAMLResponse"];
  
        if (responseList != null && responseList.length > 0) {
          String response = responseList[0];
          print("RESPONSE: $response");
  
          var decoded = window.atob(response);
          print("DECODED RESPONSE: $decoded");
  
          storeInLocalStorage(decoded, "SAMLResponse");
        }
      }
    }
  }
  
  void processGETMessage(Map data) {
    var url = data["url"];
    Uri uri = Uri.parse(url);
    if (uri.hasQuery && uri.queryParameters.containsKey("SAMLRequest")) {
      var request = uri.queryParameters["SAMLRequest"];
      // The request is URL decoded already
  
      var base64Decoded = window.atob(request);
  
      // TODO: We should find us a pub package instead of calling JS.
      JsObject pakoInflate = context["pako"];
      var inflatedBytes = pakoInflate.callMethod("inflateRaw", [base64Decoded]);
      var inflated = UTF8.decode(inflatedBytes);
  
      storeInLocalStorage(inflated, "SAMLRequest");
    }
  }
negative.code: import '../chrome_extension_saml_decoder.dart';
  
  void main() {
    // Reset the current state of the localStorage each time the extension starts.
    window.localStorage["messages"] = JSON.encode([]);
  
    // Start listening for SAML messages.
    // We do this in JS, since the 'chrome' pub package has bugs and is not compatible with the actual
    // Chrome WebRequest API at the moment.https://github.com/dart-gde/chrome.dart/issues/213
    // Make sure to attach the event listener before the listener actually starts.
    context["navigationListenerCallback"] = (data) => onBeforeRequestHandler(data);
    JsFunction f = context["startListener"];
    f.apply(null);
  