190919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski/* 290919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * Copyright (C) 2017 The Android Open Source Project 390919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * 490919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 590919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * you may not use this file except in compliance with the License. 690919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * You may obtain a copy of the License at 790919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * 890919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 990919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * 1090919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * Unless required by applicable law or agreed to in writing, software 1190919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 1290919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1390919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * See the License for the specific language governing permissions and 1490919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski * limitations under the License. 1590919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski */ 1690919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 1790919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski#include "test/Common.h" 1890919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 1990919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinskinamespace aapt { 2090919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinskinamespace test { 2190919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 2290919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinskistruct DummyDiagnosticsImpl : public IDiagnostics { 2390919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski void Log(Level level, DiagMessageActual& actual_msg) override { 2490919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski switch (level) { 2590919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski case Level::Note: 2690919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski return; 2790919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 2890919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski case Level::Warn: 2990919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski std::cerr << actual_msg.source << ": warn: " << actual_msg.message << "." << std::endl; 3090919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski break; 3190919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 3290919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski case Level::Error: 3390919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski std::cerr << actual_msg.source << ": error: " << actual_msg.message << "." << std::endl; 3490919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski break; 3590919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski } 3690919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski } 3790919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski}; 3890919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 3990919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam LesinskiIDiagnostics* GetDiagnostics() { 4090919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski static DummyDiagnosticsImpl diag; 4190919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski return &diag; 4290919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski} 4390919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 4490919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinskitemplate <> 4590919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam LesinskiValue* GetValueForConfigAndProduct<Value>(ResourceTable* table, 4690919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski const android::StringPiece& res_name, 4790919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski const ConfigDescription& config, 4890919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski const android::StringPiece& product) { 4990919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski Maybe<ResourceTable::SearchResult> result = table->FindResource(ParseNameOrDie(res_name)); 5090919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski if (result) { 5190919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski ResourceConfigValue* config_value = result.value().entry->FindValue(config, product); 5290919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski if (config_value) { 5390919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski return config_value->value.get(); 5490919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski } 5590919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski } 5690919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski return nullptr; 5790919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski} 5890919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski 5990919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski} // namespace test 6090919978e7ccf7dc25622e9d039a7e87ebe7ba11Adam Lesinski} // namespace aapt 61