1bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski/* 2bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * Copyright (C) 2017 The Android Open Source Project 3bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * 4bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * you may not use this file except in compliance with the License. 6bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * You may obtain a copy of the License at 7bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * 8bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * 10bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * See the License for the specific language governing permissions and 14bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * limitations under the License. 15bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski */ 16bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 17bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski#include "test/Common.h" 18bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 19bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskinamespace aapt { 20bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskinamespace test { 21bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 22bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskistruct DummyDiagnosticsImpl : public IDiagnostics { 23bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski void Log(Level level, DiagMessageActual& actual_msg) override { 24bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski switch (level) { 25bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski case Level::Note: 26bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski return; 27bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 28bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski case Level::Warn: 29bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski std::cerr << actual_msg.source << ": warn: " << actual_msg.message << "." << std::endl; 30bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski break; 31bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 32bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski case Level::Error: 33bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski std::cerr << actual_msg.source << ": error: " << actual_msg.message << "." << std::endl; 34bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski break; 35bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski } 36bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski } 37bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski}; 38bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 39bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam LesinskiIDiagnostics* GetDiagnostics() { 40bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski static DummyDiagnosticsImpl diag; 41bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski return &diag; 42bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski} 43bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 44bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskitemplate <> 45bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam LesinskiValue* GetValueForConfigAndProduct<Value>(ResourceTable* table, 46bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski const android::StringPiece& res_name, 47bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski const ConfigDescription& config, 48bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski const android::StringPiece& product) { 49bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski Maybe<ResourceTable::SearchResult> result = table->FindResource(ParseNameOrDie(res_name)); 50bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski if (result) { 51bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski ResourceConfigValue* config_value = result.value().entry->FindValue(config, product); 52bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski if (config_value) { 53bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski return config_value->value.get(); 54bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski } 55bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski } 56bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski return nullptr; 57bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski} 58bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski 59bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski} // namespace test 60bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski} // namespace aapt 61