Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0f44eb6 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Ignore resources from unknown types"

parents bf6a120a 701a7fe3
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -96,8 +96,6 @@ StringPiece to_string(ResourceType type) {
      return "styleable";
    case ResourceType::kTransition:
      return "transition";
    case ResourceType::kUnknown:
      return "unknown";
    case ResourceType::kXml:
      return "xml";
  }
+0 −5
Original line number Diff line number Diff line
@@ -66,11 +66,6 @@ enum class ResourceType {
  kStyle,
  kStyleable,
  kTransition,

  // Not a parsed type. It is only used when loading resource tables that may have modified type
  // names
  kUnknown,

  kXml,
};

+10 −11
Original line number Diff line number Diff line
@@ -352,15 +352,15 @@ bool BinaryResourceParser::ParseType(const ResourceTablePackage* package,
  config.copyFromDtoH(type->config);

  const std::string type_str = util::GetString(type_pool_, type->id - 1);

  const ResourceType* parsed_type = ParseResourceType(type_str);
  if (!parsed_type) {
    // Be lenient on the name of the type if the table is lenient on resource validation.
  auto parsed_type = ResourceType::kUnknown;
  if (const ResourceType* parsed = ParseResourceType(type_str)) {
    parsed_type = *parsed;
  } else if (table_->GetValidateResources()) {
    diag_->Error(DiagMessage(source_) << "invalid type name '" << type_str << "' for type with ID "
                                      << (int) type->id);
    return false;
    bool log_error = table_->GetValidateResources();
    if (log_error) {
      diag_->Error(DiagMessage(source_) << "invalid type name '" << type_str
                                        << "' for type with ID " << type->id);
    }
    return !log_error;
  }

  TypeVariant tv(type);
@@ -370,9 +370,8 @@ bool BinaryResourceParser::ParseType(const ResourceTablePackage* package,
      continue;
    }

    const ResourceName name(package->name, parsed_type,
    const ResourceName name(package->name, *parsed_type,
                            util::GetString(key_pool_, util::DeviceToHost32(entry->key.index)));

    const ResourceId res_id(package->id.value(), type->id, static_cast<uint16_t>(it.index()));

    std::unique_ptr<Value> resource_value;